0

ページを更新するたびにセッションの設定が解除され続けますが、コントロール テストを行うと問題なく動作するように見えました。

制御(保持データ):

<?php
session_start();
echo(var_dump($_SESSION));
$_SESSION['name'] = 'john doe';
?>

index.php の先頭へ

<?php
session_start();
echo(var_dump($_SESSION));
include('utils/utils.php'); 
?>

ログインページ:

<?php
session_start();
include('utils.php');
if(isset($_POST['email']) && isset($_POST['password'])){
    $email = filter($_POST['email']);
    $password = getPwd(filter($_POST['password']));
    if(!isset($_SESSION['email']) && !isset($_SESSION['password'])){
        if(isAccount($email, $password)){
            $key = genAuthKey();
            $_SESSION['email'] = $email;
            $_SESSION['auth_key'] = $key;
            mysql_query("update `users` set `auth-key`= '$key' where `email`='$email'") or die(mysql_error());
            print("ok");
        }else {
            print('error');
        }
    }else {     
        print('error');
        logOut();
    }
}else {
print('error');
}
?>

テーブル内の認証キーが更新されたため、コードが起動されています。正直なところ、何が問題なのかわかりません。

また、インデックス ページをリロードすると、セッションが設定解除されます。

もう少し情報があります。ページはセッション データを保持して保持できますが、セッションを使用する別のページが読み込まれると、すべてのデータが設定解除されます。

4

1 に答える 1

0

BOMで Unicode エンコードされた PHP ファイルを使用しているかどうかを確認します。

PHP は BOM を認識しません。BOM は最初の出力の前に出力される<?phpため、PHP はセッション Cookie に関連する HTTP ヘッダーを設定できません。

ドキュメントから:

Cookie ベースのセッションを使用するには、ブラウザーに何かを出力する前に session_start() を呼び出す必要があります。

于 2012-12-12T15:53:40.640 に答える