dポイントプレゼントキャンペーン実施中!

サーバー環境:apache2.0+php5.5
下記画面遷移をさせた際、IE11を使うとP3でセッション情報が消えます。

P1.ログインフォーム入力→P2.データのリスト表示→P3.データ詳細画面

Chrome、Firefoxでは上記問題は発生しません。

セッションを登録するのはP2です。

P3のどこかでセッション情報を消していることを疑い、テストとして下記のように冒頭で表示させるようにしたのですが、やはり消えてしまいます。
1行目|<?php
2行目|session_start();
3行目|echo $_SESSION['xxx'];

「<?php」と「session_start();」の間には改行(\n)しかありません。
IE11のアドオン全OFF、設定リセットも効果はありませんでした。
同様の症状が出た方がいらっしゃったら、どのような手を打ったか教えていただければ幸いです。

A 回答 (2件)

トークンを利用すればhttps=http間の整合性がとれるかもしれません



http://qiita.com/sksmnagisa/items/0f48541f795bea …
    • good
    • 0

4行目にprint_r($_SESSION);すればその時点では保持されているんですよね?



クッキーはちゃんと渡っていますか?
expiresは十分な期間設定されていますか?
    • good
    • 0
この回答へのお礼

yambejp様

ご指導ありがとうございます。問題点が明確になったので報告させていただきます。
まず、私の記載に間違いがありました。

IE11のみセッションが消えると記載していたのですが、間違いであることがわかりました。
IEでアクセスしたURLは「http」、それ以外でアクセスしたURLは「https」だったため、IEで「https」を試したところ、セッションが消えることはありませんでした。

また、動作確認のため下記3ページ(p1=フォーム、p2を中継して、p3)を作って試したところ、「https」ではセッション変数をキープすることができたのですが、「http」では消えました。
-----------------P1.php-----------------
<?php
echo"<form method='POST' action='./p2.php'>";
echo"<input type='text' name='xxx' value=''>";
echo"<input type='submit' value='go to p2'>";
echo"</form >";
?>

-----------------P2.php------------------
<?php
session_start();
$_SESSION['xxx']=$_POST['xxx'];
echo"<a href='./p3.php'>go to p3</a>";
?>

-----------------P3.php------------------
<?php
session_start();
echo $_SESSION['xxx'];
print_r($_SESSION);
?>

apacheもしくはphp.iniの設定でhttpsのみセッションを有効にする設定になっているのだと思います。
本稿を書く前に軽く調べたのですがどこに設定するのかわからず、まだ確認はとれていません。厚かましいお願いですが御存知だったらレスいただけると嬉しいです。

なにはともあれ、yambejp様にレスをいただけたおかげで冷静になって視点を変えることができました。
ありがとうございました!

お礼日時:2016/09/21 16:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!