0

コードに両方の新しいパスワードを正しく入力する必要があるというエラーが表示され続けます。それは私が欲しいものではありません。パスワードフィールドが入力されている場合、パスワードが一致して要件を満たしているかどうかを確認する必要があります。それ以外の場合は、プロファイルを更新する必要があります。しかし、それはしていません。IT 部門は引き続きパスワード フィールドをチェックします。私のコードで何が間違っているのか教えていただけますか?

    <?php
    if ($post == "yes") {


    $uppercase = preg_match('@[A-Z]@', $password);
    $lowercase = preg_match('@[a-z]@', $password);
    $number    = preg_match('@[0-9]@', $password);

    if (isset($password) && ($password != $password2 || !$uppercase || !$lowercase ||    !$number || strlen($password) < 8)) {
    echo "<table class=tablenews><tr><td>There is an error with your passwords. Either they do not match, or your new password does not contain 8 characters, a number, a lower and an upper case letter. Go back and retry again. </td></tr></table>";

    }

    else {
     $password = generateHash($password);

    $result = mysql_query("UPDATE users SET avatar='" . $avatar . "' WHERE id='". $_SESSION['user_id'] . "'") 
    or die(mysql_error());  
    $result = mysql_query("UPDATE users SET u_signature='" . $signature . "' WHERE id='".   $_SESSION['user_id'] . "'") 
     or die(mysql_error()); 
    $result = mysql_query("UPDATE users SET u_bio='" . $bio . "' WHERE id='".    $_SESSION['user_id'] . "'") 
    or die(mysql_error()); 
    $result = mysql_query("UPDATE users SET u_desc='" . $desc . "' WHERE id='". $_SESSION['user_id'] . "'") 
    or die(mysql_error()); 
    $result = mysql_query("UPDATE users SET u_intro='" . $intro . "' WHERE id='".     $_SESSION['user_id'] . "'") 
    or die(mysql_error()); 
        $result = mysql_query("UPDATE users SET password='" . $password . "' WHERE id='". $_SESSION['user_id'] . "'") 
or die(mysql_error()); 
printf('<script>window.location = "http://www.sw-bfs.com/index.php?siteid=profileedit"</script>');
}

    if (!isset($password)) {
$result = mysql_query("UPDATE users SET avatar='" . $avatar . "' WHERE id='". $_SESSION['user_id'] . "'") 
or die(mysql_error());  
$result = mysql_query("UPDATE users SET u_signature='" . $signature . "' WHERE id='". $_SESSION['user_id'] . "'") 
or die(mysql_error()); 
$result = mysql_query("UPDATE users SET u_bio='" . $bio . "' WHERE id='". $_SESSION['user_id'] . "'") 
or die(mysql_error()); 
$result = mysql_query("UPDATE users SET u_desc='" . $desc . "' WHERE id='". $_SESSION['user_id'] . "'") 
or die(mysql_error()); 
$result = mysql_query("UPDATE users SET u_intro='" . $intro . "' WHERE id='". $_SESSION['user_id'] . "'") 
or die(mysql_error()); 



    printf('<script>window.location = "http://www.sw-bfs.com/index.php?siteid=profileedit"</script>');

}


}

else {
?>

<table class="tablenews">
<tr><th>Edit your Profile</th></tr>

<?php
$userfinalid = $_SESSION['user_id'];
$prAvatar = get_user_data($userfinalid, avatar);
$prSignature = get_user_data($userfinalid, signature);
$prBio = get_user_data($userfinalid, bio);
$prDesc = get_user_data($userfinalid, desc);
$prIntro = get_user_data($userfinalid, intro);
?>

<br><tr><td>
<form method="post" action="<?php echo $thispage . "?siteid=profileedit"; ?>&proc=New&post=yes&<?php echo $pagevars; ?>">

<?php

echo '<label for="avatar" class=customlabelname>Avatar Link:</label><br><input type="text" class=customlabel name="avatar" value="' . $prAvatar .'"><br>';
echo '<label for="bio" class=customlabelname>User Bio:</label><br><textarea rows="10" cols="40" class=customlabel name="bio">' . $prBio .'</textarea><br>';
echo '<label for="desc" class=customlabelname>User Description:</label><br><textarea rows="10" cols="40" class=customlabel name="desc">' . $prDesc .'</textarea><br>';
echo '<label for="intro" class=customlabelname>User PM Intro:</label><br><textarea rows="10" cols="40" class=customlabel name="intro">' . $prIntro .'</textarea><br>';
echo '<label for="signature" class=customlabelname>User Signature:</label><br><textarea rows="10" cols="40" class=customlabel name="signature">' . $prSignature .'</textarea><br>';
echo '<label for="password" class=customlabelname>New Password(Leave Blank if it will be the same):</label><input type=password rows="10" cols="40" class=customlabel name="password"></textarea><br>';
echo '<label for="password2" class=customlabelname>ReType Password:</label><input type=password rows="10" cols="40" class=customlabel name="password2"></textarea><br>';
echo '<input type=submit value="submit" class=button2>';
?>

</td>
</tr>
</table>
<?php
}
    ?>
4

2 に答える 2

0
if (isset($_POST['password']) ...) {
    // ... display error
}

これは、キーが配列にpassword存在$_POSTする場合、エラーを表示することを意味します。キーが配列に存在しない場合password$_POSTは、エラーを表示するという意味だと思います。!ifの前にaを付けて、ifを反転する必要があります。

if (!isset(...) ...) {
于 2013-01-10T21:35:02.167 に答える
0

これはあなたがやりたいことを達成しますか:

if(isset($password)) {
    if ($password != $password2 || !$uppercase || !$lowercase || !$number || strlen($password) < 8) {
        error_log('error');
    echo "<table class=tablenews><tr><td>There is an error with your passwords. Either they do not match, or your new password does not contain 8 characters, a number, a lower and an upper case letter. Go back and retry again. </td></tr></table>";

    } else {
        $password = generateHash($password);

        $result = mysql_query("UPDATE users SET avatar='" . $avatar . "' WHERE id='". $_SESSION['user_id'] . "'")
        or die(mysql_error());
        $result = mysql_query("UPDATE users SET u_signature='" . $signature . "' WHERE id='".   $_SESSION['user_id'] . "'")
         or die(mysql_error());
        $result = mysql_query("UPDATE users SET u_bio='" . $bio . "' WHERE id='".    $_SESSION['user_id'] . "'")
        or die(mysql_error());
        $result = mysql_query("UPDATE users SET u_desc='" . $desc . "' WHERE id='". $_SESSION['user_id'] . "'")
        or die(mysql_error());
        $result = mysql_query("UPDATE users SET u_intro='" . $intro . "' WHERE id='".     $_SESSION['user_id'] . "'")
        or die(mysql_error());
            $result = mysql_query("UPDATE users SET password='" . $password . "' WHERE id='". $_SESSION['user_id'] . "'")
        or die(mysql_error());
        printf('<script>window.location = "http://www.sw-bfs.com/index.php?siteid=profileedit"</script>');
    }
}

コードの残りの部分はそのままにして、最初の if/else を置き換えるだけです。

コードのフォーマットにはクリーンアップが必要な場合があり、mysql クエリを実際に圧縮する必要があります。

于 2013-01-10T21:55:10.700 に答える