Ako predať skrytý parameter pomocou odkazu

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

Ide o to, že rieším overenie e-mailovej adresy pri registrácii, v e-maily pošlem odkaz na moju šablonu confirm, ktorá zmení užívateľov údaj v DB na overený, problém je v tom, že keď pohnem s myšou na ten odkaz tak sa tam objaví názov cieľovej stránky a za ňou parameter (v mojom prípade jeho e-mail), keď na ten link kliknem, ocitnej sa na tej stránke confirm a potom iba zmením URL na iný e-mail, dám refreš a „overí“ mi užívateľa s týmto e-mailom. Je to taký „všeobecný“ problém, vôbec neviem ako to vyriešiť, možno robím zle aj to overenie, tak by som bol rád keby niekto skúsenejší napísal ako sa to zvykne riešiť :) vďaka

David Matějka
Moderator | 6445
+
0
-

vygeneruj nahodnej kod pro kazdyho uzivatele, ten ulozis do db k uzivateli. do emailu ho potom pripojis k tomu odkazu a na strance s overenim zjistis, jestli je ten kod spravny..

lime
Člen | 55
+
0
-

Neviem kde robím chybu, do DB uložím ten náhodný reťazec, takisto ho pošlem do mailu
email.latte:

<a n:href="//User:confirm $user_mail.'&'.$rnd_code">link</a>
  • v maily teraz keď pohnem s myškou na odkaz tak tam vidím adresu a za ňou ten kód, ktorý sedí s tým v databáze, takže problém bude asi nižšie

UserPresenter:

public function renderConfirm($user_mail, $rnd_code) {
	if(!$this->template->user = $this->users->userConfirmAccount($user_mail, $rnd_code)) {
	    $this->flashMessage('Pre overenie e-mailovej adresy požite odkaz vo všej mailovej schránke', 'success');
	    $this->redirect('Homepage:default');
	}
    }

UsersModel:

public function userConfirmAccount($user_mail, $rnd_code) {
	return $this->connection->query('UPDATE [users] SET [confirmed_account] = "1" WHERE [email] = %s AND [rnd_code] = %s', $user_mail, $rnd_code);
    }

teraz ma to presmeruje na Homepage takže ten dotaz nefunguje, predtým mi to fungovalo keď som to mal takto isto, ibaže som porovnával iba e-mailové adresy, zrejme bude chyba niekde s parametrom rnd_code

EDIT: skúsil som teraz posielať a overovať iba ten náhodný kod ako parameter a takto to funguje, takže bude chyba pri predávaní 2 parametroch naraz

Editoval lime (19. 12. 2013 11:54)

mr.mac
Člen | 87
+
0
-

Nemělo by tam být toto?

<a n:href="//User:confirm $user_mail.'&rnd_code='.$rnd_code">link</a>

nebo toto?

<a n:href="//User:confirm $user_mail.'&amp;rnd_code='.$rnd_code">link</a>

Editoval mr.mac (19. 12. 2013 12:32)

akadlec
Člen | 1326
+
0
-
<a n:href="//User:confirm $user_mail, 'rnd_code' => $rnd_code">link</a>
lime
Člen | 55
+
0
-

Jáj jasne díky :)