3

ログインでウェブサイトを構築しています。セッションは正常に機能していますが、クリックして覚えている場合は、セッションをログイン状態に保つ必要があります。現在、いくつかのCookieに入力したユーザー名とパスワードを使用してCookieを保存するログインスクリプトがあります。以下のスクリプト $username と $password は、スクリプトでより高く設定されています。$_SESSION 変数が適切に設定されています。アラート ボックスを配置する前に、スクリプトが if ステートメントに入ることはわかっています。

login.php

while($row = mysql_fetch_array($getLoginResults))
{
    $error = "Login Successful";
    $_SESSION['Username'] = $_POST['username'];
    $_SESSION['Password'] = $_POST['password'];
    if($keep == 1)
    {
        setcookie("Username", $username, time()+3600*24*30);
        setcookie("Password", $password, time()+3600*24*30);
    }
}

ログインを確認すると、JavaScript アラートが表示されるので、Cookie が設定されていることはわかっていますが、アラート ボックスが空になっています。

check_login.php

echo "<script>alert('".$_COOKIE['Username']."')</script>";

私は何が欠けていますか???

4

5 に答える 5

14

パスを指定して setcookie を使用してみてください。これは、デフォルトで現在のパスを想定しているため、私を捕まえていました。/ を使用すると、Cookie がドメイン全体で機能するようになります

setcookie("Username", $username, time()+3600*24*30, '/');
于 2013-10-09T00:33:20.683 に答える
2

PHPでスクリプトコードを書いています。PHP は、リクエストで送信されたデータのみを認識できます。

最初に Cookie を設定してから からデータを取得した場合$_COOKIE、データはまだそこにありません。まず、ブラウザーは Cookie を受け入れてから、次の要求でそれを送り返す必要があります。

代わりに Javascript を使用し、ブラウザーからドキュメントの Cookie を取得すると、機能します。

そして今、免責事項

ログイン資格情報 (ユーザー名とパスワード) をプレーン テキストとして永続的な Cookie に保存しないでください。

正しく行われた場合、暗号的に安全な乱数ジェネレーターから長いランダム文字列を作成し (つまり、 rand()orを使用しないことを意味しますmt_rand())、それを Cookie とデータベースに保存します。このランダムな文字列は、資格情報の確認に関して、ユーザー名とパスワードの代わりになります。

于 2013-10-09T00:24:43.777 に答える
0

Jquery/Javascript を使用してブラウザに Cookie を設定することをお勧めします。PHPよりもjqueryの方が簡単だと思います。

jQuery を使用して Cookie を作成、読み取り、消去する

于 2013-10-09T00:49:02.113 に答える