[PHP-users 1034] session管理と i-mode(J-PHONE)
Masayuki Tadano
php-users@php.gr.jp
Thu, 02 Aug 2001 18:00:08 +0900
ただの といいます。
現在携帯(i-mode, J-PHONE)用のサイトを作成しようとしています。
PHP4のセッション管理機能を使おうと思っているのですが、その中
で幾つかわからないことがあり、ご存知の方がいらっしゃばと教え
て頂きたいのですが。
前提としては、PHPは、4.0.6 と 4.0.3pl1 で、コンパイルのオプ
ションは
4.0.6:
--with-apxs=/usr/local/apache/bin/apxs
--enable-mbstring --enable-mbstr-enc-trans --enable-trans-sid
--with-pgsql --without-mysql
4.0.3pl1:
--enable-jstring --with-namzu --with-kakasi
--enable-mbregex --enable-iconv --with-pgsql
--with-apxs=/usr/local/apache/bin/apxs --enable-trans-sid
--enable-track-vars --without-mysql
(屋比久さんの本のものを使わせてもらいました)
です。
あと、J-PHONEも対象にするために、form の method はすべて get
にしています。
(1) 実害がないのですが、form で自動的に付加されるセッション
ID が hidden タグになっています。
何かで見たような気がするのですが、
action=***.php?PHPSESSID=XXXXXXXXXXXXXX
のようになると思っていたのですが、何か設定(php.ini)がおかし
いでしょうか。それとも私の勘違いでしょうか。php.iniでは、
session.use_trans_sid = 1
のようになっています。
(因みに a href には自動で上記のように付加されます)
(2) a.php のフォームから送信したデータを b.php で受け取った
時に、セッション情報が更新されない。PHP4.0.6 のみでしか、
確かめていません。4.0.3pl1はグローバルIPをもった機械でない
ので。
a.php:-------------------------------------------------
<?
if (!session_id()) {
session_start();
}
?>
<html>
<head>
<title> a.php </title>
</head>
<body>
<form action="b.php" method="get">
<input type="text" name="item" maxlength="20" >
<input type="submit" name="send" value="send">
</form>
</body>
</html>
a.php:-------------------------------------------------
b.php:-------------------------------------------------
<?php
if (!session_id()) {
session_start();
}
session_register("item");
?>
<html>
<head>
<title> b.php </title>
</head>
<body>
<?php
echo "item = ". $item . "<br>";
?>
<a href="c.php"> Click Here </a>
</body>
</html>
b.php:-------------------------------------------------
のとき、a.phpで入力されたデータは、b.phpで、表示されますが、
そのあとに、携帯の←のような記号で、前のページ a.php に戻
って入力しなおし、再度送信しても、itemの内容が更新されませ
ん。N503i, N501F, とJ-PHONE でやって見て同じでした。
同じ事をPCのブラウザで行うと、内容が更新されます。この時
PCではクッキーは受け入れないようにしています。
関係ないかと思いますが、php.ini で、
session.cache_limiter = nocache
としています。あと、
session_register("item");
を、
session_unregister("item");
session_register("item");
とかしてみましたが、かわらずでした。
# ほんとは、入力内容が残らないので、public にしようかと
# 思っているのですが。
なんかとっても基本的なことを見逃しているような気がするの
ですが、まったくわからない状態です。
宜しくお願いします。