我的网站(colemansystems.psm2.co.uk)上已经具有高级用户登录/注册系统。但是,我希望向新用户发送一封电子邮件,以验证其电子邮件地址。如果他们没有单击链接,则将无法访问其帐户。我对PHP和MySQL经验不足,所以请深入解释。
编辑:我用于verify.php文件的代码(用户使用GET单击的链接(例如verify.php?d=51773199320))
verify.php
verify.php?d=51773199320
$secret = $_GET['d']; $result = mysql_query("SELECT valid FROM users WHERE secret=$secret"); while ($row = mysql_fetch_array($result)) { $valid = $row['valid']; } if ($valid == "") { echo"There seems to be a problem with the verification code.<br><br><br><br><br>"; } elseif ($valid == "1") { echo"Your account is already verified.<br><br><br><br><br>"; } else { mysql_query("UPDATE users SET valid = '1' WHERE secret=$secret"); echo "Thank you, your account is now verified and you are free to use the exclusive features!<br><br><br><br><br><br>"; }
这样安全吗?
最简单的方法是根本不注册未验证的用户。
向他们询问电子邮件地址,并通过包含此地址的链接发送电子邮件,该地址用井号密封。收到此链接后,您可以开始注册过程。
像这样
$secret = "35onoi2=-7#%g03kl"; $email = urlencode($_POST['email']); $hash = MD5($_POST['email'].$secret); $link = "http://example.com/register.php?email=$email&hash=$hash";
然后在您register.php的注册表中添加2个隐藏字段-电子邮件和哈希,以存储它们从GET接收的值。
register.php
最后,进行注册和检查,
if (md5($_POST['email'].$secret) == $_POST['hash']) { //Continue registration. }