0

以前のセッションが破棄されたら、Cookie を使用して新しいセッションを開始したいと考えています。

セッションではなく Cookie が設定されている場合、Cookie のみを使用して新しいセッションを自動的に作成できますか?

現在、私は覚えているボタンを実装しています。私のログインコードの一部は

if($rememberme=="on"){
            $user_id=mysql_result($query_run,0,'id');
            setcookie("user_id",$user_id,time()+7200);
            $_SESSION['user_id']=$_COOKIE['user_id'];
            header('Location:front_page.php');
        }else if($rememberme==""){
            echo'ok';
            $user_id=mysql_result($query_run,0,'id');
            echo $user_id;
            $_SESSION['user_id']=$user_id;
            header('Location:front_page.php');

Cookie が設定されているがセッションが設定されていない場合、サイトでさまざまなエラーが発生するため、これを行う必要があります。$_SESSION['userid'] 変数をさまざまな場所で使用しているためです。セッションが設定されていない場合、私の機能の多くは機能していません

編集:私は以下を試しましたが、うまくいきませんでした。

以前のセッションが破棄されたら、Cookie を使用して新しいセッションを開始したいと考えています。他の提案はありますか?

set_session_from_cookie();

function set_session_from_cookie(){
if(isset($_COOKIE['user_id'])){
    $_SESSION['user_id']=$_COOKIE['user_id'];
}
}
4

1 に答える 1

1

「rememberme」機能には別の方法を使用することをお勧めします。

[remember me]チェックボックスがオンになっているかどうかを確認してから、UNIQUEと秘密鍵を生成し、その鍵をCookie内とデータベースのユーザー行に配置できます。

次に、ページ上部のどこかでCookieを確認し、必要に応じてセッションを設定します。

if(isset($_COOKIE["c_key"]) && !isset($_SESSION["userId"])) 
{ 
     /*
      * Here check for users matching $_COOKIE["c_key"] in database and get the userId
      */
     $_SESSION["userId"] = $user_data["userId"]; 
}

そして、どこでもセッションを使い続けてください。

于 2012-05-09T17:49:50.770 に答える