我有帐户信息的更新表单。在一种形式下,我有姓名,用户名,电子邮件,公司,密码。让我们说我想要做的就是改变我的名字,我仍然使用那个形式,所有其他领域保持不变。在更新表单中,我有一个电子邮件和用户名检查器,以确保它们尚未被采用。所以现在,即使我没有更改我的电子邮件地址或用户名,它也会被提交给检查器代码。
如何修复它,以便它不属于同一个人时阻止它:
// 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('');
}
答案 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
?>