[PHP-users 5928] Re: iモードでlocation が効かない

Mitsuhisa TANAKA php-users@php.gr.jp
Wed, 06 Mar 2002 18:13:07 +0900


田中です。

何時も色々参考にさせて戴いています。

大昔の蒸し返しになるのですが、同じ問題に遭遇して解決方法が判
明したので報告します。

実行環境は
Debian GNU/Linux 2.2
Server: Apache/1.3.9 (Unix) Debian/GNU PHP/4.0.6
です。
# PHP には rfc1867 のパッチを充てて有ります。

From: "Yasuo Ohgaki" <yohgaki@hotmail.com>
Subject: [PHP-users 973] Re: iモードでlocation  が効かない
Date: Mon, 30 Jul 2001 23:32:49 +0900
Message-ID: <OE59tw7TsvoXHsk0tVv000054e3@hotmail.com>

一つ前の投稿の
From: Tybalt of Capulet <ice-man@tomato.ne.jp>
Subject: [PHP-users 972] Re: iモードでlocation   が効かない
Date: Mon, 30 Jul 2001 22:32:31 +0900
Message-ID: <20010730222510.EA81.ICE-MAN@tomato.ne.jp>

> [修正後]
> session_start();
> session_destroy();
> header("location: http://www.yahoo.com/");

の方法では、保存されているセッションが破棄されてしまうので、
セッションデータを利用したい場合の解決策にはなりません。

上手く行く方法は以下の通り session_write_close() を使います。

$ cat location.php
<?php
session_start();
$location = sprintf("location: http://hoge/hoge.php?%s=%s", session_name(), session_id());
session_write_close();
header($location);
exit;
?>

確認した端末は
NTT-DoCoMo N503i(i-mode)
J-Phone J-SH07(J-Sky)
です。

====================================================
以下は、解決策を模索する際にダンプしたデータです。

> 原因が気になるので、wgetやtelnetを使ってサーバーレスポンスの状態を確認でき
> ませんでしょうか?


1. 失敗する
<?php
session_start();
header("location: http://hoge1/");
exit;
?>
の場合
$ wget -S --tries=2 http://hoge/location.php
--16:44:06--  http://hoge:80/location.php
           => `location.php'
hoge:80 に接続しています... 接続しました!
HTTP による接続要求を送信しました、応答を待っています... 
ヘッダの解析中にファイルの終端になりました。
再試行しています。

--16:44:06--  http://hoge:80/location.php
  (試行: 2) => `location.php'
hoge:80 に接続しています... 接続しました!
HTTP による接続要求を送信しました、応答を待っています... 
ヘッダの解析中にファイルの終端になりました。
中止しました。

となり、location が上手く行きません。

2. 成功するけど、セッションを使えない
<?php
//session_start();
header("location: http://hoge1/");
exit;
?>
の場合

$ wget -S --tries=2 http://hoge/location.php
--16:44:49--  http://hoge:80/location.php
           => `location.php'
hoge:80 に接続しています... 接続しました!
HTTP による接続要求を送信しました、応答を待っています... 302 Found
2 Date: Wed, 06 Mar 2002 07:44:49 GMT
3 Server: Apache/1.3.9 (Unix) Debian/GNU PHP/4.0.6
4 X-Powered-By: PHP/4.0.6
5 location: http://hoge1/
6 Connection: close
7 Content-Type: text/html;charset=Shift_JIS
8 
場所: http://hoge1/ [続く]
--16:44:49--  http://hoge1:80/
           => `index.html'
hoge1:80 に接続しています... 接続しました!
HTTP による接続要求を送信しました、応答を待っています... 200 OK
2 Date: Wed, 06 Mar 2002 07:44:46 GMT
3 Server: Apache/1.3.9 (Unix) Debian/GNU
4 Last-Modified: Mon, 04 Feb 2002 09:08:58 GMT
5 ETag: "c045-10b0-3c5e4faa"
6 Accept-Ranges: bytes
7 Content-Length: 4272
8 Connection: close
9 Content-Type: text/html; charset=iso-2022-jp
10 

    0K -> ....                                                   [100%]

と上手く行きます。が、セッションデータを利用した場合には無効です。

以上、よろしくお願いいたします。
-----------------------------------------------
TANAZO Limited Partnership / Mitsuhisa TANAKA
I'm not a cyborg :-(