2016-05-07 16 views
0

私はuser_idでセッションを設定するログインスクリプトを実行しています。しかし、ユーザーが私に変数を割り当てたRemember meチェックボックスをチェックして$remember = $_POST['remember'];になってもクッキーを設定したいのですが、クッキーが設定されていません。 Remember meボックスをチェックすると、セッションが開始されますが、ブラウザを終了して戻ってくると、再度ログインしてCookieが設定されていないことが示されます。今度はuser_idのセッションとuser_nameのクッキーを保存しました。私は、彼らが完璧に動作し、すべての変数はので、ここで割り当てられているため、HTML部分は、データベースから関連すると自分のログインの検証であるとは思わないセッションとクッキーを設定するコードです:セッションとは別にクッキーを設定する方法

 if($password == $pass_word){ 
      session_start(); 
      $_SESSION['user_id'] = $user_id; 
      if($remember == "on"){ 
       setcookie("user_name", $user_name, time()+2592000); 
      }    
     } 

そして、これは私ですloggedin()機能:

function loggedin(){ 
    if((isset($_SESSION['user_id'])) || ((isset($_COOKIE['user_name'])) && (isset($_SESSION['user_id'])))){ 
     return true; 
    } else { 
     return false; 
    } 
} 

しかし、それは唯一のクッキーなしのセッションを設定します。私は何が間違っているのですか?

+0

あるのでsessionを再起動する必要がありました。実際に(設定されませクッキーは/が保管されていないHTTPヘッダではないんブラウザで)、または再度ログインしないでください。私はあなたの状態が一種のファンキーに見えるので、後者を疑う。 – ArSeN

+0

'if($ password == $ pass_word){'はファイルの先頭ですか?投稿を編集しない場合は、上記の残りの部分を追加してください。 – Andreas

答えて

0

私はそれを修正しました。 cookieが設定されますが、私は、ブラウザが閉じられた場合、これはあなたが明確にしてくださいすることができ、私の解決策

// db connection here 
function loggedin(){ 
    if(isset($_SESSION['user_id']){ 
     return true; 
    } else if(isset($_COOKIE['user_name']){ 
     $query = mysqli_query($con, "SELECT id FROM users WHERE user_name='". $_COOKIE['user_name']."'"); 
     $sql = mysqli_fetch_array($query); 
     $_SESSION['user_id'] = $sql['id']; 
     return true; 
    } else { 
     return false; 
    } 
} 
関連する問題