0

我有一个简单的 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 值。

4

2 回答 2

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.";
    }

}

它可以是用户名或识别当前用户的任何其他信息。

于 2013-06-21T22:52:41.450 回答
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)"
于 2013-06-21T23:01:11.423 回答