Ako predať skrytý parameter pomocou odkazu
- lime
- Člen | 55
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
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
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)