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

携帯用にCookieを使わないセッション管理を実現しようとしています。
その挙動を確認してみたくて、FF3でCookieを切ってみて、こういうコードを書いてみました。

<?php
ini_set('session.auto_start', 0);
ini_set('session.use_trans_sid', 1);
ini_set('session.use_only_cookies', 0);
ini_set('session.use_cookies',0);
session_start();
echo session_id();
?>

ここでechoされるsession_id()がページを更新する度にIDが変わってしまい、ずっとステートレスな状態になってしまっています。

Cookieが送信されないと毎回別Sessionと看做しているようなのですが、このように毎回SessionIDが変わるという現象においてどういうことが原因として考えられますでしょうか?

当方の環境は以下の通りです。

PHP:5.2.5(Xampp1.6.6a)
OS:Win XP Pro SP3


●質問者: ござ先輩
●カテゴリ:コンピュータ
✍キーワード:cookie ECHO FF3 OS PHP
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● chibitomo
●25ポイント

Cookieが送信されないと毎回別Session

もうすでに別接続っつうこと。

http://www.yc.tcu.ac.jp/~yamada/doc/php/0802.html

◎質問者からの返答

URLにsession.nameで引き渡ない限り、別Sessionになるという基本的なことを失念していました。

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


2 ● hijk05
●30ポイント

session_start();

セッションがここで開始されますので、新しいセッションIDになります。

この書き方だと毎回セッションIDが変わるのは仕様どおりです。

http://q.hatena.ne.jp/answer

◎質問者からの返答

お恥ずかしい限りです。失礼しました。

また、URLもしくはhiddenで常にセッションIDを引き渡さない限り

別Sessionになることも同時に理解しました。ありがとうございました。


3 ● dungeon-master
●25ポイント

>ini_set('session.use_trans_sid', 1);

これの戻り値を確認してみてください。

session.use_trans_sidはPHP5以降ではPHP_INI_PERDIRレベルらしいので、

ini_setできないのではないでしょうか?

http://jp2.php.net/manual/ja/ini.list.php

その場合、php.ini、httpd.conf、.htaccessのいずれかに記述すればいけると思います。

◎質問者からの返答

ini_get('session.use_trans_sid')したら1でした。

id:hijk05さんのご指摘の通り、リロードする度にstart()が呼ばれてしまうのが原因のようです。

それに、URLにSessionIDを引き渡していないままリロードしているので、毎回別のSessionIDが

振られるのも正しい挙動のように思います。

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

関連質問


●質問をもっと探す●



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