Mnogo si ga zakomplikovao
Sto se tice koda za aktivaciju, tvoje rjesenje ce (mozda) raditi samo ako covjek aktivira nalog u istoj sesiji kada ga je i napravio, sto nije dobro. Za aktivacioni kod umjesto random vrijednosti koristi nesto sto mozes u bilo kom trenutku generisati na osnovu podataka korisnika.
Mozes procitati neke ideje na:
http://www.chauy.com/2006/01/email-activation-in-php/
P.S. Vrijednosti iz REQUEST promjenljivih nemoj direktno stavljati u upite, vec kroz neki filter i escape.