アシアル株式会社主催 開発者向け、一歩先をいくためのテクニカルセミナー

<< includeファイルからpostできません。 質問一覧 ログイン処理について >>

  • 0P
クッキー無効の携帯でsubmitするとセッションが切れます

■携帯とPC兼用のページを作成しています。
 セッションを使っています。

■PCやバンクの携帯では動作するのですがDocomoのクッキーが使えない機種(P-06A)で
submitでPOST送信したときにセッションが切れて困っています。

■.htaccessで"session.use_trans_sid"の設定ができるサーバーでなら動くのですが、
指定されたレンタルサーバーでは.htaccessの設定ができません。

■PHPのバージョンは5なのでini_setで"session.use_trans_sid"を設定することができず
"output_add_rewrite_var"を使用しています。

■"output_add_rewrite_var"を使うと
"< a href=・・・>"で移動するさいにはセッションは切れません。
<form action="XXXXX.php?" method="post"><input type="hidden" ・・・でセッションが切れてしまいます。

 試しに手書きでセッションIDを付加してみました。
 <form action="XXXXX.php<?php echo $arg?>" method="post">
  ($argの部分には"?".session_name."=".session_id() をセット)
 結果はうまく渡せたり渡せなかったりと不安定です。ほぼ失敗です。

 [備考] Header("Location XXX.php")にセッションIDを付加した場合は動きます。

かなり状態が込み入ってしまい自分で何をやっているか不明な状況です。
コードが長いので部分的に抜粋します。
大まかな流れは下記の通りです。

1)"login.php"
ログイン成功したら、クッキーが使えるか判断します
セッションを開始して"list.php"へジャンプします。
-中略-
  1. $_SESSION["cookieSts"]=true;//クッキーが使えないときはtrue
  2. $_SESSION["sts"]="test";//ログインしているか判断するフラグ
  3. if ($_SESSION["cookieSts"]){
  4.   $arg=session_name()."=".session_id();//クッキーが使えないのでセッションIDを付加
  5. header("Location: list.php?".&arg);

2)"list.php"
  1. <?php
  2. session_start();
  3. if (isset($_SESSION["sts"]) && !empty($_SESSION["sts"])){//ログイン済か調べる
  4. }else{
  5.   die("エラー");
  6.   exit;
  7. }
  8.  
  9. if ($_SESSION["cookieSts"]){//クッキー無効
  10.   if(isset($_REQUEST[session_name()]) && preg_match('/^\w+$/'$_REQUEST[session_name()])) {
  11.     session_id($_REQUEST[session_name()]);
  12.     output_add_rewrite_var(session_name()$_REQUEST[session_name()]);
  13.   } else {
  14.     output_add_rewrite_var(session_name()session_id());
  15.   }
  16. }
  17. -中略-
  18. <form action="input.php" method="post">
  19. -中略-
  20. <input type="submit" name="command" value="新規投稿" ><br>
  21. <input type="submit" name="command" value="ログアウト">
  22. </form>

3)"input.php"
  1. <?php
  2. session_start();
  3. if (isset($_SESSION["sts"]) && !empty($_SESSION["sts"])){
  4. }else{
  5.   die("エラー");
  6.   exit;
  7. }

----------------------------

■ 3)で$_SESSION["sts"]がNULLになりエラー終了してしまいます。
■ 1)-2)までは必ず動きます。
■ 2)の"list.php"で<a href="input.php・・・">でのリンクをクリックした場合はセッションを保持しています。
  しかし"新規投稿"や"ログアウト"ボタンを押して"submit"で "input.php"へ移動したときは
  $_SESSION["sts"]がNULLになってしまいます。
 
PCでブラウザのクッキーをOFFにしてテストすると動きます。
 ブラウザのステータスバーでセッション名とIDが付加されているのを確認しています。
Docomoのi-mode HTML シュミレーターⅡでも動きます。(クッキーOFFにしています)

稚拙な説明で大変心苦しいのですがよろしく願い致します。

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:クッキー無効の携帯でsubmitするとセッションが切れます

><form action="input.php" method="post">

  1. <form action="input.php?<?= SID ?>" method="post">

で引き渡せませんか(手元のP-02Aで動作確認済み)


(追記)
当然ですが「Cookieが有効な環境」で、無闇にSIDを付与しないよう注意してくださいね
ツリーへ TOPへ

Re:Re:クッキー無効の携帯でsubmitするとセッションが切れます

うまくいきました。これが原因でずっと悩んでいました。ありがとうございます。
ツリーへ TOPへ
includeファイルからpostできません。 質問一覧 ログイン処理について