[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 にしようかと
 # 思っているのですが。

 なんかとっても基本的なことを見逃しているような気がするの
 ですが、まったくわからない状態です。
 宜しくお願いします。