2012-04-13 7 views
1

Я использую электронные письма как имя пользователя для входа на сайт, который разрабатывается, теперь, если пользователь обновляет свой адрес электронной почты со страницы профиля, как я могу убедиться, что мой запрос проверки электронной почты не поймает адрес электронной почты пользователя как уже зарегистрировано в базе данных.PHP Необходимое условие для консультации

страница 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 ('$ FullName', '$ д.р.', '$ адрес', '$ 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

+0

Кроме того, в качестве стороны я считаю полезным называть переменные с капитализацией слов после первого example $ myUserName – Joel

+0

Что означает 'if ($ row [0]' mean .. какая строка относится к –

0

Если вы обновляете базу данных, используйте Update .. Обновление клиентов set email = '$ username', где email = '$ username'.

Вы не можете использовать эту форму для регистрации и обновления информации.

0

Вы сохраняете идентификатор пользователя? Если это так, вы можете проверить существующие адреса электронной почты, которые не являются текущим адресом электронной почты пользователей.

+0

Да, у каждого клиента есть идентификатор 'cus_id' –

Смежные вопросы