2012-04-13 60 views
1

我使用电子邮件作为用户名登录正在开发的网站,现在如果用户更新他们的电子邮件从配置文件页面,我如何确保我的电子邮件检查语句不赶上用户的电子邮件已经在数据库中注册了。PHP IF条件通知需要

页面 profile

/* Now we will store the values submitted by form in variable */ 
      $fullname=$_POST['fullname']; 
      $dob=$_POST['dob']; 
      $address=$_POST['address']; 
      $myusername=$_POST['myusername'];   
      $telephone=$_POST['telephone']; 

$queryuser=mysql_query("SELECT * FROM customer WHERE email='$myusername' "); 
$checkuser=mysql_num_rows($queryuser); 

if($checkuser != 0) 
{ 
$Merr[]='» Sorry this email is already registered!'; 
} 
else {$insert_user=mysql_query("UPDATE CUSTOMER SET SYNTAX HERE"); 

现在,这些都是有问题的领域;

(姓名,出生日期,地址,电子邮件,电话)VALUES( '$全名', '$ DOB', '$地址', '$名为myUsername', '$电话')

正如您可以看到用户是否更改登录电子邮件那么语法将检查针对数据库提交的电子邮件,但是如果用户不更改电子邮件地址,他将收到错误,因为它在数据库中找到。

我在想像的东西;

if($checkuser != 0) { 
    if($myusername == $_POST['myusername']) 
    (...dont show error.) 

但我的PHP技能是有限的。任何人都可以建议请,谢谢

回答

2
/* Now we will store the values submitted by form in variable */ 
$myusername=$_POST['myusername'];   


$queryuser=mysql_query("SELECT username FROM customer WHERE email='$myusername' "); 
$checkuser=mysql_num_rows($queryuser); 

/*Mysql_fetch_row will select the first row from the query and put it into a 
multidimensional array. As you only want 1 e-mail associated with one user the query 
should only ever select one row anyway. */ 
$row = mysql_fetch_row($queryuser); 

if($checkuser != 0) 
{ 
     if($row[0] != $SESSION['username']) 
     { 
     //ERROR 
     } 

} 
else { 
//Update details 
} 

这样,你可以只提交电子邮件与任何其他投入一起,如果电子邮件并没有改变,你不会需要做任何事情。

此外,你已经说过你的发布登录用户的用户名。我想你会真的想用sessions来做到这一点。

并且不要忘记escape POST数据的安全性。

另外INSERT INTO应该不是update声明,如果他们更新他们的电子邮件地址?

+0

编辑我的答案我已经意识到$ myusername实际上是发布的用户名,你不想这样做,你想使用fetch_row – Joel 2012-04-13 17:19:36

+0

另外作为一方,我发现它有助于命名变量与首字母大写之后例如$ myUserName – Joel 2012-04-13 17:29:43

+0

'if($ row [0]'是什么意思..哪一行是指 – 2012-04-13 18:34:29

0

如果您要更新数据库使用更新.. 更新客户设置电子邮件='$用户名'其中电子邮件='$用户名'。

您不能使用相同的表单来注册和更新信息。

0

你是否为用户保留一个id类的东西?如果是这样,你可以检查现有的电子邮件地址是不是当前用户的电子邮件地址。

+0

是的,每个客户都有一个ID'cus_id' – 2012-04-13 18:37:18