1

開発中のサイトにログインするためのユーザー名として電子メールを使用しています。ユーザーがプロファイルページから電子メールを更新した場合、電子メールチェックステートメントがデータベースにすでに登録されているユーザーの電子メールをキャッチしないようにするにはどうすればよいですか。

ページ プロフィール

 /* 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");

これらは問題のフィールドです。

(名前、dob、アドレス、電子メール、電話)VALUES('$ fullname'、'$ dob'、'$ address'、'$ myusername'、'$ telephone')

ユーザーがログイン電子メールを変更したかどうかを確認できるように、構文は送信された電子メールをデータベースに対してチェックしますが、ユーザーが電子メールを変更しないままにすると、データベースにあるためエラーが発生します。

私は次のようなことを考えていました。

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

しかし、私のphpスキルは限られています。誰かアドバイスしてもらえますか、ありがとう

4

3 に答える 3

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
}

そうすれば、他の入力と一緒に電子メールを送信することができ、電子メールが変更されていない場合は、何もする必要はありません。

また、ログインしたユーザーのユーザー名を投稿すると言いました。私はあなたが実際にそれをするためにセッションを使用したいと思うだろうと想像します。

また、セキュリティのためにPOSTデータをエスケープすることを忘れないでください。

また、INSERT INTOは、電子メールアドレスを更新している場合、更新ステートメントではありませんか?

于 2012-04-13T17:17:11.480 に答える
0

データベースを更新する場合は、Updateを使用します。顧客を更新するには、email ='$ username'を設定します。ここで、email='$username'です。

情報の登録と更新に同じフォームを使用することはできません。

于 2012-04-13T17:15:01.967 に答える
0

ユーザーのためにIDのようなものを保持していますか?もしそうなら、あなたは現在のユーザーのメールアドレスではない既存のメールアドレスをチェックすることができます。

于 2012-04-13T17:19:15.007 に答える