php.iniで、
session.use_cookies=On
session.use_only_cookies=Off
session.use_trans_sid=On
になっています。
それなのに、クッキーを有効にしたブラウザで表示させてもURLにIDが埋め込まれてしまいます。
ただし、1度リロードすると埋め込まれなくなります。
これは何故でしょうか? どのようにすればリロードしなくても埋め込まれないように出来るのか教えて下さい。
http://php.s3.to/man/ref.session.html
セッション処理関数(session)
session.auto_startがOFF(FALSE)ってことはないですよね?
もしくは、ちゃんとsession_start() か session_register() でセッションの開始を宣言してますでしょうか。
えーと、質問からして、session.use_only_cookiesをTRUEにすると、問題があるんですよね・・・。
このソースでは、session.use_trans_sidがTRUEになってるので、初期値として 相対URIは自動的にセッションIDを含むように変換されます。
これを避ける為に、session.use_trans_sidをFALSEにしてみてください。
これくらい単純な構成なら、同ソースと/link.phpにsession_start()を宣言するだけでよいと思いますが、複雑なセッション管理が必要なら、session_name()やsession_id()で制御してください。
なお、session_start()を宣言しただけで、 スーパーグローバル配列$_SESSIONへ新しい変数が登録されていない場合、セッションのレコードが作成されませんので御注意を。(^^)
回答ありがとうございます。
>session.use_only_cookiesをTRUEにすると、問題がある
そうですね、出来ればクッキー無効の環境でも動作するようにしたいと思っているので。
>session.use_trans_sidがTRUEになってるので、初期値として 相対URIは自動的にセッションIDを含むように変換されます。
そうなのですか! それじゃ仕様なのですね…。
最初のアクセス時にクッキー有効無効のチェックをして、有効の場合だけ、ini_set関数でsession.use_trans_sidをFALSEにすることで、なんとか解決できました。
ありがとうございました!
回答ありがとうございます。
session.auto_startはOffですが、session_start()の宣言はしています。
テスト用に以下のようなファイルを作ってアクセスすると、リンク先にIDが埋め込まれます。原因になっている箇所がありましたら指摘して下さい。
session_start();
?>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<title>テスト</title>
</head>
<body>
リンク
</body>
</html>