[PHP-users 20765]Re: URLパラメータでのセッションについて

Naoto Arai arai @ init.co.jp
2004年 3月 12日 (金) 20:26:18 JST


PHP4.3.4の環境が手元に無く、実際に試せないので
確実なことはいえませんが、
仰るような現象が起きるということは、
session.use_trans_sid の機能によるURL自動書き換え処理が、
ob_start()にて指定された出力コールバック関数よりも先に動作している、
ということになります。

もし、どのようにしても、この実行順を変えることが出来ない
ということであれば、「PHPの仕様である」といえるでしょう。



なお、PHP4.1.2で、同じような処理を試したところ、
両方ともURLにセッションIDが付加されました。
#ただし、ob_flush()は使えないので、ob_end_flush()を使用。



> 
> 実際に埋め込んでいるのは以下のようなソースになります。
> 
> <?php
> // コールバック関数
> function test($buffer){
> 	ereg_replace("%%url%%","http://hogehoge.jp/",$buffer);
> }
> // 出力開始
> ob_start("test");
> ?>
> <html><head>
> ............
> <a href="%%url%%">Link1</a>
> <a href="http://hogehoge.jp/">Link2</a>
> <?php
> ob_flush();
> ?>
> 
> このソースを実行する前にすでにセッションを開始してあるとします。
> その場合、Link2の部分には
> 	<a href="http://hogehoge.jp/?PHPSESSID=xxxxxxx">
> とセッションIDがURLパラメータとして埋め込まれているのですが、Link1の部
> 分には
> 	<a href="http://hogehoge.jp/">Link1</a>
> とリンク先は変換され埋め込まれているのですがセッションIDは埋め込まれず、
> 結果的にセッションが切れてしまいます。
> 
> この現象はPHPの仕様なのでしょうか?
> -- 
> 深沢友紀 <fukatomo @ mailya.net>
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
> 

--
新井 直人 <arai @ init.co.jp>



PHP-users メーリングリストの案内