• ベストアンサー

クッキー名が変わってしまう

セッション管理でクッキーを使用しています。 setcookie("ABCID" , $ABCID, time() + 1440); というようにクッキー名を決めているのですが、 ある環境だと名前が変わって取得できません。 var_dump($_COOKIE)で確認すると windows(ローカル)では、IE・Firefox共に array(2) { ["PHPSESSID"]=> string(26) "q3jsuelppgapa425lmtmhgf222" ["ABCID"]=> string(26) "q3jsuelppgapa425lmtmhgf222" } それに対してLinuxサーバにアップして確認すると(win)IEでは array(1) { ["0850256NQ"]=> string(26) "xdxppwkpdxtrcepaaaw&00a224" } というように設定した覚えのない名前が表示されます。 Firefoxでは問題なく取得できます。 php.iniの設定なのか、まったく予測ができなく困っています。 お力をお貸しください。 php5 session.auto_start Off Off session.bug_compat_42 Off Off session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_httponly Off Off session.cookie_lifetime 60 60 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 1000 1000 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 session.hash_bits_per_character 5 5 session.hash_function 0 0 session.name PHPSESSID PHPSESSID session.referer_check no value no value session.save_handler files files session.save_path /tmp /tmp session.serialize_handler php php session.use_cookies On On session.use_only_cookies On On session.use_trans_sid 0 0 ini_set('session.save_handler', 'user');

質問者が選んだベストアンサー

  • ベストアンサー
  • _chihiro_
  • ベストアンサー率63% (26/41)
回答No.1

僕の環境(Linux+PHP5+Apache2)では問題なく表示できました。 ・IEでCookieを受け取らない設定になっていませんか? ・Cookieは一回目表示したときにセットされるので、一回目表示後→更新→二回目の表示でCookieの値取得となります。更新してみましたか? FireFoxでは表示されるという事なので、ブラウザ側に問題があるように思えます。 あと関係ないかもしれませんが、php.iniの書式は 「項目=値」 と書きましょう。 質問者さんは session.auto_start Off Off となっていますが、実際は session.out_start=Off です。 setcookie() -Manual http://jp.php.net/manual/ja/function.setcookie.php php.iniディレクティブリスト -Manual http://jp.php.net/manual/ja/ini.php#ini.list

aya_bambi
質問者

お礼

ご回答ありがとうございます。 Cookieは常に受け取るの設定になってます。 普段プライバシーの設定が「中」で、試しに一番低い設定で 試してみましたが、何も変わらずでした。 クッキー名はphpinfoで確認しても、_COOKIE["0850256NQ"]です。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

質問に対する解答ではありませんが、 > セッション管理でクッキーを使用しています。 > > setcookie("ABCID" , $ABCID, time() + 1440); > というようにクッキー名を決めているのですが、 セッションクッキーの名前の指定方法は session_name('ABCID'); になると思いますが・・

aya_bambi
質問者

お礼

session_name('ABCID'); setcookie("ABCID" , $ABCID, time() + 1440); こういうかたちでやっていました。説明が下手で申し訳ございません。 その後、以前上手くいかなかったのでやめていた session_name('ABCID'); setcookie(session_name(), $ABCID, time() + 1440); というかたちにで実行したところ、 array(1) { ["0850256NQ"]=> string(26) "xdxppwkpdxtrcepaaaw&00a224" }さえも表示されなくなり array() {} ←明らかにセッションが切れてるという状態になりました。 これでもIEはログインできず、Firefoxはログインできました。 結局のところ原因はサーバの時間が1時間ずれていたので セッションが切れてしまっていたということでした。 IEの仕様でサーバとクライアントの時間のズレが致命的になって いたようです。 初めに疑問だった["0850256NQ"]はなんだったのか解決できませんが 動作に問題がないため、締めさせていただきます。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A