我有一个简单的PHP页面,您可以在其中更新您的网站个人资料。有几个可更新的输入,如电话号码,MSN访问等。有一个特定的电子邮件地址字段。由于它不是寄存器而是更新页面,因此用户的当前电子邮件添加。应该作为字段的值出现在那里。但是当用户将电子邮件更改为另一个时,我遇到了问题,只要它没有被使用就可以正常工作,但是当他不更改电子邮件并更新其他内容时,它将无法正常工作。
$email = mysql_real_escape_string($_POST['email']);
if(mysql_num_rows(mysql_query("SELECT * FROM users WHERE email='$email'")) > 0)
{
echo "The e-mail is already in use.";
}
我应该如何解决这些问题,因为每当用户更改电子邮件之外的其他内容时,执行相同的表单操作,当然,用户会因为将电子邮件更改为自己的电子邮件而收到错误。实际上再次发送邮件,这给mysql_num_rows()一个1值。
答案 0 :(得分:0)
尝试类似的东西:
$email = mysql_real_escape_string($_POST['email']);
$username = mysql_real_escape_string($_POST['username']); // You can also get it from the session or wherever you want
$row = mysql_query("SELECT * FROM users WHERE email='$email'");
if(mysql_num_rows($row) > 0)
{
if ($username != $row["username"]) {
echo "The e-mail is already in use.";
}
}
它可以是用户名或识别当前用户的任何其他信息。
答案 1 :(得分:0)
我建议在会话中收集当前用户的电子邮件地址,然后您可以添加条件以验证所选电子邮件是否与当前用户电子邮件不同
"SELECT * FROM users WHERE email='$email' AND email !=" . $_SESSION['user_email']
你也可以像这样使用子请求
"SELECT * FROM users WHERE email='$email' AND email != (select email FROM users WHERE id= $id_of_current_user)"