Autor Zpráva
Volt
Profil *
Zdravim. Tak jsem zase po case narazil na dalsi vec kterou jeste neumim. (je jich cim dal vic) :)

Potrebuju udelat klasickou registraci jako je treba na fora. Uzivatel vyplni formular, posle se mu aktivacni email. V nem pak klikne na odkaz a je presmerovan na nejaky aktivacni link. To zmeni pravdepodobne neco v db, jako aktivni na true.

Jedine co nevim, je jak generovat ten aktivacni odkaz a jeste aby opravdu uzivatele aktivoval. Email hodlam posilat fci mail(...).
Uzivatele ukladam do DB. Pak je z ni i overuju pri loginu.

Budu moc vdecny za kazdou pomoc. Na netu jsem nasel tuny clanku jak udelat registraci, ale nikde s aktivacnim emailem.

Predem diky,
Volt
Volt
Profil *
Jeste bych se pri te prilezitosti chtel zepat, zda se da nejak v php zjistit aktualni datum.
Nox
Profil
Prostě vygeneruješ kód, který se buď uloží uživateli celý do db, nebo jen nějaký klíč k jeho vytvoření (a/nebo indície k němu budou jeho další parametry), pošle se mail kde bude kód. Pak si vytvoříš stránku, kde se kód zadá (nebo rovnou získá v getu, pokud bude aktivace v mailu pouze na kliknutí), porovná se s klíčem uvedeným v db (nebo se spočítá podle parametrů v db) a pokud bude platný, tak se uživatel (třeba přes nějaký sloupec Stav nebo podobně) označí jako aktivovaný
Nox
Profil
Volt
překvapivě funkce Date :)
Volt
Profil *
Prostě vygeneruješ kód, který se buď uloží uživateli celý do db, nebo jen nějaký klíč k jeho vytvoření (a/nebo indície k němu budou jeho další parametry), pošle se mail kde bude kód. Pak si vytvoříš stránku, kde se kód zadá (nebo rovnou získá v getu, pokud bude aktivace v mailu pouze na kliknutí), porovná se s klíčem uvedeným v db (nebo se spočítá podle parametrů v db) a pokud bude platný, tak se uživatel (třeba přes nějaký sloupec Stav nebo podobně) označí jako aktivovaný


No ja bych potreboval poradit prave konkretne s vygenerovanim kodu, jinak je mi to docela jasny.
Medvídek
Profil
co třeba:

function heslo($delka)
{
 srand((double)microtime()*100000); 
 $znaky = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; 

 do{

    $retezec .= substr($znaky, rand()%(strlen($znaky)),1); 

   }while(strlen($retezec)< $delka); 

return($retezec);
} 
$nahodne_heslo=heslo("9");
Volt
Profil *
co třeba:
function heslo($delka)
{...
}
$nahodne_heslo=heslo("9");


No me nejde o heslo (pripadne generovani nahodneho plaintextu) , me jde o vygenerovani linku a do toho generovanyho kodu se musi nejak zakryptovat informace jaky ucet se ma aktivovat. (Jestli to chapu dobre) Protoze az uzivatele na ten link klikne, tak getem vemu ten link, vytahnu z nej informace a v DB ho aktivuju.
Nicmene zase to nesmi byt nejak pruhledne, aby nestaceli zmenit parametr, treba ...?reg=id1. To by si to kazdy aktivoval i bez mailu jenom tim ze by si zkousel tam davat cisla.
joe
Profil
hash můžeš generovat třeba z id uživatele, nicku, emailové adresu a nějakého svého textu. To pak uložíš k uživateli do db.

Na aktivaci se podíváš do db, jestli tam takový hash je, pokud je, účet aktivuješ.
srigi
Profil
Volt
Co trebars takto >> majme takuto DB schemu:



Pri registracii, vytvoris zaznam v tabulke users, v flagom activated=false. Zaroven si vygenerujes token a ulozis ho do tabulky activation_queue. Zaroven ulozis cas vytvorenia tokenu, aby si mohol zaviest nejaky ten timeout. Zaznam v activation_queue zviazes s IDckom v tabulke users. Na zaver posles aktivacny email.

Po prichode emailu, ides do tabulky activation_queue, pozries sa ci mas token (ziskany z GET) v tabulke, skontrolujes timeout, ak vsetko sedi, prehodis flag v tabulke users a zmazes zaznam z tabulky activation_queue.

Takto nie sanca aby si niekto aktivoval ucet podvrhom. Platne tokeny su ulozene bezpecne v databaze a platny token pozna iba prijmatel mejlu.
Volt
Profil *
Volt
Co trebars takto >> majme takuto DB schemu:
...

Tohle bude asi idealni reseni. Mockrat dekuju ze vsechny napady a navrhy. Dalsi problem ktery jsem diky Vam vyresil.

Jeste jednou mockrat dekuju.

Volt
Tomasds
Profil
srigi
<ot>
Z čeho je prosím tě ten obrázek? Občas řeším, v čem tyhle věci malovat a myslím že na to existují lepší nástroje než excel :)
</ot>
Medvídek
Profil
No me nejde o heslo (pripadne generovani nahodneho plaintextu) , me jde o vygenerovani linku a do toho generovanyho kodu se musi nejak zakryptovat informace jaky ucet se ma aktivovat. (Jestli to chapu dobre) Protoze az uzivatele na ten link klikne, tak getem vemu ten link, vytahnu z nej informace a v DB ho aktivuju.
Nicmene zase to nesmi byt nejak pruhledne, aby nestaceli zmenit parametr, treba ...?reg=id1. To by si to kazdy aktivoval i bez mailu jenom tim ze by si zkousel tam davat cisla.



to je takovej problem si vygenerovat ten 9 mistny kod, a po registraci by byl aktivacni kod odeslan na email:

blabla.cz/aktivuj.php?kod=TENTVUJKOD dal by byl dotaz SELECT kod FROM UZIVATELE WHERE kod = TENTVUJKOD pokud by se nasel ten kod, tak by se UPDATLO a parametr aktivovano by si z 0 zmenil na 1.
srigi
Profil
Tomasds
WWW SQL Designer

enjoy.
Tomasds
Profil
srigi
děkuji ti z celého srdce.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: