Chce pouzit hezci backlink parametry v Nette?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
MartyIX
Člen | 217
+
0
-

Ahoj,

klasicky backlink vypada takto: http://example.com/user.login/?backlink=sd4gd Moc se mi ta URL nelibi, tak jsem si zkopiroval storeRequest metodu a upravil takto:

        /**
         * Stores current request to session.
         * @param  mixed  optional expiration time
         * @return string key
         */
        protected function storeRequestEx($key, $expiration = '+ 10 minutes') // novy parametr $key
        {
                $session = $this->session->getSection('Nette.Application/requests');

                if (isset($session[$key])) {
                        do {
                                $key = Nette\Utils\Strings::random(5);
                        } while (isset($session[$key]));
                }

                $session[$key] = array($this->user->getId(), $this->request);
                $session->setExpiration($expiration, $key);
                return $key;
        }

takze ted mohu mit v backlink parametru, co chci, a vysledna URL pak muze vypadat napriklad takto: http://example.com/user.login/?backlink=user-accounts-myaccounts

A moje otazka zni: Povazujete to nekdo za prinosne?

____________________________________________________
Kod v login presenteru:

$key = strtolower(str_replace(":", "-", $this->presenter->name));
$backlink = $this->storeRequestEx($key);
Robyer
Člen | 74
+
0
-

Co když bude mít člověk otevřených více stránek v prohlížeči? A každá se sice bude vracet na stejný Presenter:action, ale bude mít jiné další parametry? Např. aktuální stránka, nebo nějaký filtr…

honos
Člen | 109
+
0
-

Robyer napsal(a):

To by nemelo vadit, do sessions se uklada request ktery se nasledne obnovi..

Editoval honos (28. 1. 2014 9:39)

Robyer
Člen | 74
+
0
-

Jasně, ale klíč k tomu konkrétnímu requestu v session bude pro všechny otevřené záložky stejný, pokud jsem to pochopil správně a bude ve formátu „presenter-action“ (viz původní příklad http://example.com/user.login/?backlink=user-accounts-myaccounts ). Řešilo by to připojení hashe, vygenerovaného z těch parametrů, ale to už jsme zase na začátku.

Editoval Robyer (28. 1. 2014 9:48)

MartyIX
Člen | 217
+
0
-

Robyer:

  1. $key si muzes nastavit na co chces (muzes krome jmena presenteru pocitat i s parametry, ale nevidim uz v tom moc smysl).
  2. V mem pripade by to dopadlo tak, ze se objevi backlink=random-string, pokud uz je pouzity klic user-accounts-myaccounts. Ale i to by slo udelat hezci (napriklad, ze bys generoval backlink=user-accounts-myaccounts-$randNum).
MartyIX
Člen | 217
+
0
-

Robyer napsal(a):

Jasně, ale klíč k tomu konkrétnímu requestu v session bude pro všechny otevřené záložky stejný, pokud jsem to pochopil správně a bude ve formátu „presenter-action“ (viz původní příklad http://example.com/user.login/?backlink=user-accounts-myaccounts ). Řešilo by to připojení hashe, vygenerovaného z těch parametrů, ale to už jsme zase na začátku.

Ten kod jen nastavi hezci defaultni hodnotu backlinku. Pointou je, ze toto v 90 % pripadu dopadne tak, ze uzivatel uvidi hezkou URL a ve zbytku uvidi URL osklivejsi.

Michal Vyšinský
Člen | 608
+
0
-

Je vůbec nutné, aby uživatel viděl backlink? Co to hodit jen jako hidden prvek do formuláře?

Když jsem na nějakých stránkách jako uživatel, očekávám, že když mi systém někam zakáže přístup a bude po mě chtít přihlášení, tak mě po přihlášení pošle tam, kam jsem chtěl. O to, co je v URL se ale nezajímám.

Edit: Napsal jsem hloupost

Editoval CherryBoss (28. 1. 2014 10:40)

MartyIX
Člen | 217
+
0
-

CherryBoss napsal(a):

Je vůbec nutné, aby uživatel viděl backlink? Co to hodit jen jako hidden prvek do formuláře?

Když jsem na nějakých stránkách jako uživatel, očekávám, že když mi systém někam zakáže přístup a bude po mě chtít přihlášení, tak mě po přihlášení pošle tam, kam jsem chtěl. O to, co je v URL se ale nezajímám.

A jak se ten backlink do prihlasovaciho formulare dostane? Typicky scenar je:

  1. URL XY vyzadujici prihlaseni
  2. Redirect na stranku s prihlasenim (s backlink parametrem) ← o tomto kroku se bavime v tomto vlakne
  3. V prihlasovacim formulari je ulozen backlink do hidden fieldu a pokud se prihlaseni povede, tak je uzivatel presmerovan na URL XY.
Michal Vyšinský
Člen | 608
+
0
-

Pravda. Omlouvám se, špatně jsem to pochopil.

Editoval CherryBoss (28. 1. 2014 10:35)

Robyer
Člen | 74
+
0
-

MartyIX napsal(a):

  1. V mem pripade by to dopadlo tak, ze se objevi backlink=random-string, pokud uz je pouzity klic user-accounts-myaccounts.

Aha, to, že se při existenci generuje jiný náhodný klíč, jsem přehlédl.

Editoval Robyer (28. 1. 2014 12:39)