如何防止第二次重复检查?

时间:2011-03-30 19:50:34

标签: php

我有帐户信息的更新表单。在一种形式下,我有姓名,用户名,电子邮件,公司,密码。让我们说我想要做的就是改变我的名字,我仍然使用那个形式,所有其他领域保持不变。在更新表单中,我有一个电子邮件和用户名检查器,以确保它们尚未被采用。所以现在,即使我没有更改我的电子邮件地址或用户名,它也会被提交给检查器代码。

如何修复它,以便它不属于同一个人时阻止它:

   // checks if the email is in use
  if (!get_magic_quotes_gpc()) {
  $_POST['email'] = addslashes($_POST['email']);
  }
  $emailcheck = $_POST['email'];
  $check = mysql_query("SELECT email FROM accounts WHERE email = '$emailcheck'")
  or die(mysql_error());
  $check2 = mysql_num_rows($check);

  //if the name exists it gives an error
  if ($check2 != 0) {
  print("here i basically show the form once again highlighting the error)");
  die('');
   }

2 个答案:

答案 0 :(得分:1)

我不知道ur db是如何格式化的,但是添加用户名到sql应该这样做

 // checks if the email is in use
  if (!get_magic_quotes_gpc()) {
  $_POST['email'] = addslashes($_POST['email']);
  }
  $emailcheck = $_POST['email'];
  $check = mysql_query("SELECT email FROM accounts WHERE email = '$emailcheck' 
                        AND NOT(user='$username')")
  or die(mysql_error());
  $check2 = mysql_num_rows($check);

  //if the name exists it gives an error
  if ($check2 != 0) {
  print("here i basically show the form once again highlighting the error)");
  die('');
   }

因此,它会查看电子邮件不在该特定用户行中的位置: - )

答案 1 :(得分:1)

将原始值存储在提交的表单中,并在表单加载时检查new value == old value。如果它们不相等,请进行检查,否则跳过它。

<?
   if ($_POST['oldemail'] != $_POST['newemail']) {
      //Do check here
   }
   //so on and so on
?>