0

セッションを使い始めたばかりで、頭が痛いです。これは昨夜は機能していましたが、今日は開いています...機能しなくなりました。

私のログイン プロセッサでは、すべてが問題なければ次のようになります。このスクリプトは問題なく動作します。セッション変数をエコーし​​て、配列が機能することを確認しました。

$username - > post from login script
$encrypt_password -> created from password check further up the script      

        {

                    $session_name = 'LOGIN'; // Set a custom session name
                    $secure = false; // Set to true if using https.
                    $httponly = true; // This stops javascript being able to access the session id. 
                    $cookie_lifetime = '3600';
                    $cookie_path = '/';
                    $cookie_domain = '127.0.0.1';

                    session_set_cookie_params($cookie_lifetime, $cookie_path, $cookie_domain, $secure, $httponly); 
                    session_name($session_name); // Sets the session name to the one set above.

                    $group = $row['group_type'];

                    $user_browser = $_SERVER['HTTP_USER_AGENT']; /*grabs browser info*/

                    $user_id = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $username); /*XSS Protection*/
                    $group_id = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $group);   /*XSS Protection*/

                    session_start();
                    $_SESSION['user']=$user_id;
                    $_SESSION['group_name']=$group_id;
                    $_SESSION['login_string'] = hash('sha512', $user_browser.$encrypt_password);
                    session_write_close();

                    header("location:".$group_id."_index.php");                         
                }

セッションから情報を収集するインクルード ファイルを作成し、保護されたすべてのページに含めました。各 if ステートメントのカスタム エラー コードを作成したところ、ここの if ステートメントが失敗することがわかりました。セッション変数をエコーするか、セッション配列を夜に印刷しても何も返されません。

 $session_name = 'LOGIN'; // Set a custom session name
        $secure = false; // Set to true if using https.
        $httponly = true; // This stops javascript being able to access the session id. 
        $cookie_lifetime = '3600';
        $cookie_path = '/';
        $cookie_domain = '127.0.0.1';

        session_set_cookie_params($cookie_lifetime, $cookie_path, $cookie_domain, $secure, $httponly); 
        session_name($session_name); // Sets the session name to the one set above.
        session_start(); // Start the php session
        session_regenerate_id(false); // regenerated the session, delete the old one.     

    if(isset($_SESSION['user'],$_SESSION['group_name'], $_SESSION['login_string']))

これが壊れる前にユーザーグループの働き方を変えていましたが、どの変数もうまくいきませんでした。ところで、私は彼から学んでいます: php と mysql で安全なログイン スクリプトを作成します。

また、ユーザーが保護されたページにアクセスするたびに、セッション パラメータを呼び出す必要がありますか?

ご指摘ありがとうございます。

4

2 に答える 2

1

session_start();最も重要なことは、セッションを呼び出す前に、すべてのトップに配置してみてください。あなたはsession_name($session_name);それが始まる前に電話しています。

it=session

于 2013-06-17T02:11:45.287 に答える
0

すべてのページでセッションを再生成すると、前のセッションでデータが破壊されます。

削除するsession_regenerate_id(false);

于 2013-06-17T02:08:15.427 に答える