2011-07-19 11 views
3

session_start()を使用してセッションを開始するPHPコードがあります。ユーザーがログインした後は、そのユーザー情報を示すprofile.phpに移動します。しかし、ユーザーがページをリロードすると、セッションは終了します。私は例えば1時間それを維持する方法はありますか?私はクッキーを試しましたが、セッションがすでに開始されていることをPHPに伝える方法はわかりません。ありがとう!クッキーを使用してPHP session_start()を維持する

クッキーとセッション開始のためのProfile.phpコード:

if(isset($HTTP_COOKIE_VARS['session'])){ 
    session_start(); 
} else { 
    header('Location: index.php'); 
} 

ログインコード:セッションをチェックし

session_start(); 

$_SESSION['pass'] = $password; 
header('Location: ../profile.php'); 
setcookie("session","1",time()+3600,"/"); 

はコード:

if($_SESSION['pass'] == $tableArray[0]['password']) { 
    $username = $tableArray[0]['name']; 
    $avatar = $tableArray[0]['avatar']; 
} else { 
    header('Location: index.php'); 
} 

私は(session_destroyを呼んでいました)ここに:

<li><a href=<?php session_destroy(); echo "index.php"?>>Logout</a></li> 

そして、PHPがHTMLの前に実行されるのを忘れました:Pさんが問題でした!

+0

」をセッションのセッション名ですか?ログインコードで 'session_name( 'session')'を使って名前を 'session'に設定しませんでした。デフォルトでセッション名(およびクッキー名)は 'PHPSESSID'です –

答えて

3
  • あなたは()を再度または
  • あなたは()session_destroyを呼んでいるでsession_startを呼び出していません。ファイル内のどこにいても
+0

私は '

  • >Logout
  • ' – pmerino

    +1

    の' session_destroy(); 'を呼び出して、それを常に呼び出します。 PHPはサーバー上で実行されるため、ユーザーはリンクも参照してください:-) – Rufinus

    +0

    これは問題だと思います:Dありがとう! – pmerino

    0

    session_start()を再度profile.phpと呼んでいないと思われます。

    セッションデータにアクセスするすべてのスクリプトでsession_start()に電話する必要があります。

    UPDATEコードが代わりにセッションクッキーの存在を確認するの

    を掲示した後、代わりのようなものです:

    // Start the session first 
    session_start(); 
    if (isset($_SESSION['username'])) { 
        // user is already logged in 
    } else { 
        header('Location: index.php'); 
    } 
    
    +0

    申し訳ありません私は今すぐコードをポストするつもりです – pmerino

    +0

    @ zad0xsisあなたのコードを見て、私の答えを更新しました。 –

    +0

    それは問題ではなかった、私はsession_destroy()を呼び出していた。 HTMLコードを忘れてしまいました。 – pmerino

    0

    は/ php.iniで(上にあるようにsession.use_cookiesを設定するようにしてください.htaccess)

    0

    の先頭にあるsession_start()と言うと、セッションデータを知る必要があるスクリプトはすべてです。

    セッションクッキーはあなたの懸念事項ではありません。「実装の詳細」を考慮する必要があります。 (クッキーは、通常はブラウザが終了するまで、ユーザーのブラウザに住んでます。)

    +0

    私はそれを試しましたが、ページが読み込まれるたびに動作しません。セッションを確認するためのコードを編集しました – pmerino

    +0

    いいえ、 'isset($ HTTP_COOKIE_VARS ['session']))') - あなたはセッションクッキーの名前が分かりません!クッキーについて考えるのをやめ、セッションのことを考えるだけです。クッキーは全く忘れています。 –

    1

    技術的には私はこの解決策を見つけました。

    既に指定されているものがあります。変更保存パス文字列elseセッションが保存されているディレクトリのアクセス許可を変更します。

    これは私のために働いた。

    あなたのセッションがセッションディレクトリに格納されている場合は、この操作を行います。

    chmod 777 session/ 
    
    関連する問題