2012-04-13 62 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