0

わかりました...それで...ここでの最初の質問ですが、ご容赦ください。

登録、MySQL データベースなどを使用してログイン スクリプトを作成しました。これまでのところ、うまく機能しています。ページを更新すると、まだ情報を入力していなくても、ログイン情報が正しくないというエラーが表示されることを除いて。初めてページをロードするか、偽のユーザーにログインしてからログアウトすると、機能します。しかし、ここにコードがあります

    if($_SESSION["logged"])
{
         print_secure_content();
}
else {
        if(!$_SESSION["logging"])
        {  
        $_SESSION["logging"]=true;
        echo "Login:";
        loginform();
        }
         else if($_SESSION["logging"])
           {
                 $number_of_rows=checkpass();
                 if($number_of_rows==1)
                        {       
                         $_SESSION[user]=$_POST[userlogin];
                         $_SESSION[logged]=true;
                         echo"<h1>you have logged in successfully</h1>";
                         print_secure_content();
                        }
                else{
                                   echo "wrong password or username, please try again";
                                    loginform();



                        }
                }

         }
4

1 に答える 1

1

これは、ユーザー名/パスワードを検証するかどうかを$_SESSION.

ログイン フォームが表示されている場合は、$_SESSION['logging']に設定されtrueます。次に、正常にログインします (まだ true に設定されています)。次にログイン フォームが表示されたときは、まだ に設定されてtrueいるため、ユーザー名とパスワードの組み合わせとエラーを確認しようとします。

$_SESSION['logging']ユーザー名/パスワードを検証する必要があるかどうかを判断するためにを使用するのではなく、$_POST配列内にユーザー名とパスワードのフィールドが存在するかどうかを確認する必要があります。これらはユーザーがフォームを送信したときにのみ存在するためです。

于 2013-01-10T02:22:11.053 に答える