人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのセッションIDの引き渡しについての質問です。
php.iniで、
session.use_cookies=On
session.use_only_cookies=Off
session.use_trans_sid=On
になっています。
それなのに、クッキーを有効にしたブラウザで表示させてもURLにIDが埋め込まれてしまいます。
ただし、1度リロードすると埋め込まれなくなります。
これは何故でしょうか? どのようにすればリロードしなくても埋め込まれないように出来るのか教えて下さい。

●質問者: wintarsnow
●カテゴリ:ウェブ制作
✍キーワード:ON PHP URL クッキー セッション
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● sasada
●30ポイント

http://php.s3.to/man/ref.session.html

セッション処理関数(session)

session.auto_startがOFF(FALSE)ってことはないですよね?

もしくは、ちゃんとsession_start() か session_register() でセッションの開始を宣言してますでしょうか。

◎質問者からの返答

回答ありがとうございます。

session.auto_startはOffですが、session_start()の宣言はしています。

テスト用に以下のようなファイルを作ってアクセスすると、リンク先にIDが埋め込まれます。原因になっている箇所がありましたら指摘して下さい。

session_start();

?>

<html xmlns=”http://www.w3.org/1999/xhtml”>

<head>

<title>テスト</title>

</head>

<body>

リンク

</body>

</html>


2 ● sasada
●30ポイント

えーと、質問からして、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にすることで、なんとか解決できました。

ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ