0

何らかの理由で、このコードはデータベースで現在のパスワードをチェックしていませんが、パスワードを正しく変更します。また、私のデータベースに接続することもできます。また、新しいパスワードが新しいパスワードの確認と同じであるかどうかを確認することもできます。これは実行中のphpですが、これで何が問題になる可能性がありますか?

<?php if(!defined('INCLUDE_CHECK')) header("Location: index.php"); ?>

<?php

/* irrelevant parts omitted */

if($_POST['submit']=='Change Password')
{
    // Checking whether the Change Password form has been submitted

    $err = array();
    // Will hold our errors


    if(!$_POST['password'] || !$_POST['newpassword'] || !$_POST['confirmpassword'])
        $err[] = 'All the fields must be filled in!';

    if(!count($err))
    {

        if($_POST['password'] != /* something should be here but i don't know what */)
            $err[] = 'Current password is incorrect!';

        if($_POST['newpassword'] != $_POST['confirmpassword'])
            $err[] = 'New passwords do not match!';

        if(!count($err))
        {           

            $pass = $_POST['confirmpassword'];

            mysql_query(
                            "UPDATE members 
                            SET pass='".md5($pass)."' 
                            WHERE id='{$_SESSION['id']}'"
                        );

            $_SESSION['msg']['change-password-success']='Success your password has been changed!';

        }       
    }

    if($err)
    $_SESSION['msg']['change-password-err'] = implode('<br />',$err);
    // Save the error messages in the session

    header("Location: change-password.php");
    exit;
}
?>
4

2 に答える 2

2

何らかの理由で、このコードはデータベースで現在のパスワードをチェックしていませんが、パスワードを正しく変更します。

...これは実際にあなたのコードですか?それとも、質問の言い回しが不十分ですか?

if($_POST['password'] != /* something should be here but i don't know what */)

パスワードをチェックしないのには理由があるので...

また:

また、データベースに接続して、新しいパスワードが新しいパスワードの確認と同じであるかどうかを確認することもできます。

いいえ、そうではありません。ユーザーが入力した他のフィールドに対してパスワードをチェックしているだけです。データベースに対しては何もチェックしていません。

if($_POST['newpassword'] != $_POST['confirmpassword'])
        $err[] = 'New passwords do not match!';
于 2012-05-25T11:28:36.430 に答える
1

私が見る限り、既存のレコードと照合するためにデータベースを呼び出すスクリプトのどこにもありません...

$query = mysql_query("SELECT * FROM members WHERE id='{$_SESSION['id']}'");
$data = mysql_fetch_assoc($query);
if($data['pass'] == md5($_POST['confirmpassword'])){
echo "Old and new password matches";
}
于 2012-05-25T11:31:22.313 に答える