2012-04-21 49 views
2

セッションIDを保持するPHPSESSID変数がクライアントクッキーに保存されていません。 この結果、session_start()関数を呼び出すたびに新しいセッションIDが生成されます。PHPSESSIDがクッキーに保存されない

これは、FireFox、Opera、Chromeを使用している場合に当てはまります。サファリを使用すると、何らかの理由でこの変数がcookieに正常に保存され、すべて正常に動作します。

EDIT:はここにphpinfo()を経由して、私のセッション設定です:

session settings via phpinfo

私のウェブサイトは、サブドメインを持っており、私はすべてのサブドメインacorss同じセッションを使用します。

第二編集: 私は私のメインのドメインにvar_dump($_COOKIE);をチェックするとき、私は名前PHPSESSIDの下にセッションIDを取得しますが、私はサブドメインにそれを行うとき、私は空のarray()を取得します。

+0

あなたのphp.iniの様々なセッション/クッキーの設定を確認してください。次に、httpデバッガ(firefoxのhttpfoxやfirebugのネットタブなど)を使用して、何がワイヤを横切っているかを確認します。適切に役立つ情報はありません。 –

+0

これはphp.iniの問題ではないと思いますが、これは一部のブラウザでのみ発生するためです。どのような情報が必要ですか? –

+2

いいえ、それは.iniの問題です。サファリは、サーバーが送信しているものを受け入れるだけの寛容なブラウザです。 –

答えて

3

クッキーのドメインがlocalhostに設定されているようです。これは実際にあなたのウェブサイトをlocalhostから実行している場合にのみ有効です。ドメイン名と一致するようにsession.cookie_domainが必要です(オプションで.example.comなど)。サブドメインも含めて.と入力してください(.example.comなど)。

+0

メインドメイン(localhost)でも正常に動作しますが、 'ini_set( 'session.cookie_domain'、 '.localhost');'まだサブドメイン(forum.localhost)に問題があります –

0

それはヨアフの場合に使用しますが、おそらく同様の問題を持って他の人のために使用されていない:(にsession_startを呼び出すことを忘れないでください

それはのsession_start(ように聞こえる)を作成しますそれがクライアントクッキーから送信されていない場合は、PHPSESSIDをクッキーに保存します。

php.net

からの訪問者がサイトにアクセスすると(session.auto_startが1に設定されている場合)、PHPは自動的にチェックするか、あなたの要求(明示的にsession_startから())特定のセッションかリクエストと共にIDが送信されました。この場合、以前保存された環境が再作成されます。

のsession_startに関するいくつかの良い例()http://php.net/manual/en/function.session-start.php

関連する問題