| << includeファイルからpostできません。 | 質問一覧 | ログイン処理について >> |
- 0P
クッキー無効の携帯でsubmitするとセッションが切れます
- 0P
セッションを使っています。
■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"へジャンプします。
-中略-
- $_SESSION["cookieSts"]=true;//クッキーが使えないときはtrue
- $_SESSION["sts"]="test";//ログインしているか判断するフラグ
- if ($_SESSION["cookieSts"]){
- $arg=session_name()."=".session_id();//クッキーが使えないのでセッションIDを付加
- }
- header("Location: list.php?".&arg);
2)"list.php"
- session_start();
- if (isset($_SESSION["sts"]) && !empty($_SESSION["sts"])){//ログイン済か調べる
- }else{
- die("エラー");
- exit;
- }
- if ($_SESSION["cookieSts"]){//クッキー無効
- if(isset($_REQUEST[session_name()]) && preg_match('/^\w+$/', $_REQUEST[session_name()])) {
- session_id($_REQUEST[session_name()]);
- output_add_rewrite_var(session_name(), $_REQUEST[session_name()]);
- } else {
- output_add_rewrite_var(session_name(), session_id());
- }
- }
- -中略-
- <form action="input.php" method="post">
- -中略-
- <input type="submit" name="command" value="新規投稿" ><br>
- <input type="submit" name="command" value="ログアウト">
- </form>
3)"input.php"
- session_start();
- if (isset($_SESSION["sts"]) && !empty($_SESSION["sts"])){
- }else{
- die("エラー");
- exit;
- }
----------------------------
■ 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にしています)
稚拙な説明で大変心苦しいのですがよろしく願い致します。
クッキー無効の携帯でsubmitするとセッションが切れます minak83 [06月19日 18時59分] | includeファイルからpostできません。 | 質問一覧 | ログイン処理について |





