Bu temelde bir kaç seçenek var:
1) rastgele tek bir benzersiz bir tanımlayıcı oluşturun ve karşılık hangi kullanıcı adı ile bu veritabanında saklayabilirsiniz
2) rastgele bir parola oluşturun ve bağlantı kullanıcı kimliği ve şifre ve veritabanı parolayı depolamak
3) kullanıcı kimliği şifrelemek için tek yönlü bir karma işlev (md5, sah1, vb) ve gizli bir tanımlayıcı kullanın. Eğer veritabanında şifreli bir kullanıcı kimliğini saklamak zorunda değilsiniz.
Eğer anahtar zaten varsa görmek için veritabanı denetimi konusunda endişelenmenize gerek çünkü Seçenek 1. zordur. Ancak, URL aktive ediliyor adını içermediğini güzel.
Zaten ileride kullanıcı bilgilerini (en az muhtemelen parola) depolamak için veritabanı çeşit kullanmak için gidiyoruz, sen seçeneği 2 ile gidebiliriz. Bu veritabanına başka bir sütun eklemek için bir şey almaz. E-posta gönderirken, kullanıcı adını içeren satır için başka bir sütuna $ key = sha1 (rand (1, 99999). $ Username) gibi kullanıcı adı ve bir şey kaydetmek. http://you.com/activation.php?user= $ username & key = $ tuşu: O zaman bağlantı bu gibi bakmak var. Activation.php size anahtar veritabanında saklanan değere eşit olup olmadığını görmek için kontrol edin.
Eğer veritabanında daha az depolama alanı kullanmak istiyorsanız, seçenek 3 çalışacaktır. Sen gizli tanımlayıcı olarak $ anahtar = sha1 ($ mysecret. $ Username) gibi bir şey kullanabilirsiniz. Sadece böyle 'aaafj_my_secret_adfaf' olarak $ mysecret olarak biliyorum ki garip bir şey kullanın. 2 seçeneği olarak URL aynı tip kullanın. Ancak, sadece $ username dayalı $ anahtar oluşturabilir çünkü, bunu saklamak gerekmez. Eğer activation.php olarak işlerken Yani, sadece görmek için kontrol eğer sha1 ($ mysecret. $ _GET [Kullanıcı adı]) == $ _GET [anahtar]. Öyle ise, size doğru kullanıcı olduğunu biliyorum. Teorik olarak, yeterli kayıtları ile, birisi $ mysecret için değerini anlamaya olabilir ve çok etkinleştirme anahtarları oluşturur. Ancak, elbette onlar ne olduğunu hesaplamak için başlayabilir önce alacağını tescillerinin milyarlarca veya daha fazla fark olurdu. Gerekli aktivasyon sayısı müzakere fonksiyonunun anahtar boyutuna dayanmaktadır. Zor senin $ mysecret değerini tahmin yapmak için md5 vs SHA1 (160 bit) (128 bit) kullanın.