Umjesto random koda mozes da koristis sta god hoces, mozes i samo timestamp polja koje predstavlja vrijeme kada se korisnik registrovao (ako ga nemas, obavezno ga uvedi) ili kombinacija tog i/ili nekih drugih polja, pa dodatno npr. md5 ili slicno... Sta god, samo da u bilo kom trenutku mozes na osnovu postojecih podataka u bazi ponovo generisati aktivacioni kod i uporediti ga sa onim sto korisnik prilikom aktivacije koristi.
u vezi prvog pitanja, procitaj
http://phpsec.org/projects/guide/sr/3.html#3.2
a potom i cijeli
http://phpsec.org/projects/guide/sr/index.html
Sretno