ユーザーの詳細と、ユーザーが必要に応じてそのような詳細を更新する更新ステートメントを含むフォームがあります。電子メールを別のアカウントに関連付けることができないように検証を追加しました。 if($checkuser != 0)
このステートメントの問題は、ユーザーが電子メールを変更せずに詳細を更新すると、電子メールが既に存在するというエラーが表示されることです。
メールの存在チェック後に統合したかったのですがelse if(($_POST["myusername"]) == ($row['email']))
、更新を続けます (myusername 変数名にはメールが含まれています)。つまり、投稿されたメールが現在のメールと同じである場合は、更新を続けます。
しかし、私はPHPに比較的慣れていないので、括弧と括弧に問題があります。
これが私のコードです
if($_POST['usubmit']=='Update')
{
$Uerr = array();
if (!$_POST['fullname'] || !$_POST['myusername'])
{
$Uerr[] = '» Name or Email must be filled in!';
}
if (!checkEmail($_POST['myusername']))
{
$Uerr[]='» Your email is not valid!';
}
// If there are no errors
if(!count($Uerr))
{
/* Now we will check if username is already in use or not */
$queryuser=mysql_query("SELECT * FROM customer WHERE email='" . mysql_real_escape_string($_POST["myusername"]) . "'");
$checkuser=mysql_num_rows($queryuser);
if($checkuser != 0)
{
$Uerr[]='» Sorry this email is already registered!';
}
else
{
$updateDetails = mysql_query("UPDATE customer SET
name = '" . mysql_real_escape_string($_POST["fullname"]) . "',
dob = '" . mysql_real_escape_string($_POST["dob"]) . "',
address = '" . mysql_real_escape_string($_POST["address"]) . "',
email = '" . mysql_real_escape_string($_POST["myusername"]) . "',
telephone = '" . mysql_real_escape_string($_POST["telephone"]) . "'
WHERE cus_id = '$cus_id'");
if ($updateDetails)
$_SESSION['Umsg']['Ureg-success']="» Your details have been updated successfully!";
else {
$Uerr[]='» error updating your account'.mysql_error();
}
}
}
if(count($Uerr))
{
$_SESSION['Umsg']['Ureg-err'] = implode('<br />',$Uerr);
}
header("Location: account.php");
exit;
}