Ben kaydolarak kullanıcıları içeren bir PHP web sitesi oluşturma, ve ben "e-posta onay" kodları için en iyi uygulamalar hakkında merak ediyorum.
Yeni kullanıcılar e-posta adreslerini onaylamanız gerekir - Ben bir kod üretme ve o da onun hesabını etkinleştirmek için kullanabileceğiniz bir e-posta kullanıcı göndererek bunu. Aksine bir veritabanında bu anahtarı depolamak yerine, ben kullanışlı küçük bir geçici çözüm kullanıyorum: kod sonucudur:
md5("xxxxxxxxx".$username."xxxxxxxxxxx".$timestamp."xxxxxxxxx");
$ Timestamp kullanıcı oluşturma zamanı ifade eder nerede. Bütün ben bu konuda oldukça memnun oldu, ama sonra düşünmeye başladım, bu yeterince güvenli? Ve ne çarpışma olasılığı hakkında? Ve ben de bir çarpışma yanlışlıkla başka bir kullanıcının parolasını sıfırlamanın bir kullanıcı neden olabilir, ben de benzer bir metodoloji kullandıysanız parola sıfırlama, vb kodları oluşturmak gerekir. Ve bu hiç iyi değil.
Yani bu şeyleri nasıl yaparsınız? Düşüncelerim aşağıdaki biçimde bir tablo oldu:
codePK (int, a-I), userID (int), type (int), code (varchar 32), date (timestamp)
'Tip' 1, 2 veya 3 anlam "aktivasyon", "e-posta değişim" veya "şifre sıfırlama" nerede olacağını. Bu bunu yapmanın iyi bir yolu var mı? Daha iyi bir yol var mı?
Yukarıda benzer bir yöntem kullanarak, otomatik olarak cron işleri kullanmadan iki gün boyunca eski şey silebilir? Benim ev sahibi (nearlyfreespeech.net) bunları desteklemiyor. Mümkünse ben = P. sadece dağınık olduğu gibi, şeyleri siler bir script var wget harici ana bilgisayara bir cron işi zorunda kalmamak istiyorum
Thanks!
Mala
Update:
To clarify: I've realized the only way to securely and safely go about this task is by using a database, which is what the original function was trying to avoid. My question is on how the table (or tables?) should be structured. Somebody suggested I do away with codePK and just make the code a PK. So in short, my question is: is this what you do?