当用户注册时,md5(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM))
列中会有一个随机值verified
,直到他验证了自己的帐户为止。发生这种情况时(通过电子邮件),verified
将为空。
当用户想要再次收到他的电子邮件验证时,请在文本框中输入他的电子邮件,并且有4种可能的情况:
我的问题是,如果我的逻辑和结构是正确的,如果我忘记了什么。它可以正常工作。
if ($_POST["email"]) {
require_once('config.php');
$errflag = false;
$send2email = mysql_real_escape_string($_POST["email"]);
if (!filter_var($send2email, FILTER_VALIDATE_EMAIL)) {
$errflag = true;
}
if($errflag) {
header("location: please-correct-your-email.php");
exit();
}
$qry = "SELECT verified FROM members WHERE email='$send2email'";
$result = mysql_query($qry);
$member = mysql_fetch_assoc($result);
if($result) {
if (mysql_num_rows($result) == 0) {
header("location: this-email-is-not-found.php");
exit();
}
elseif ( (mysql_num_rows($result) > 0) && ($member['verified']) ) {
header("location: still-not-verified.php");
exit();
}
else {
header("location: is-already-verified.php");
exit();
}
}
} //this is for if post email
答案 0 :(得分:0)
我将验证更改为布尔字段。这意味着
verified BOOLEAN
------------------
1
0
而不是“当他未经验证时,字段已填满,当他验证时,字段为空白”。这有点令人困惑。
我会搬家
$member = mysql_fetch_assoc($result);
后
if ($result){
我会添加确认代码,因为没有安全代码(验证码)进行电子邮件验证是没有意义的