質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2095閲覧

特定の部分のみセッションが消えてしまいます。

ponchi00

総合スコア7

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/05/28 02:06

編集2018/05/28 02:31

前提・実現したいこと

入力フォームを作っていて、セッションを使用して確認ページなどを作りたい。

発生している問題・エラーメッセージ

内容を次のページに渡すときに、セッションの中身が消えてしまいます。
ログインの部分は問題ありませんが、フォームに入力した内容のみ消えてしまいます。
Chromeで試すと消えますが、IEでは正常でした。

該当のソースコード

php

1//1.入力フォーム 2 3<?php 4session_start();//ログイン確認 5if(isset($_SESSION['login'])==false) 6{ 7 print 'ログインされていません' 8 exit(); 9} 10?> 11 12<form action="check.php" method="post" enctype="multipart/form-data"> 13 <div class="set_input"> 14 <input name="A" type="text"> 15 </div> 16    <input type="submit" id="submit" value="確認する"> 17 <input type="reset" id="reset" value="リセット"> 18</form>

php

1//2.入力した内容を確認するページ 2 3<?php 4session_start();//ログイン確認 5if(isset($_SESSION['login'])==false) 6{ 7 print 'ログインされていません' 8 exit(); 9} 10 11 12 $A=$_SESSION['A']=$_POST['A']; 13 14    print $A//ここでは表示される 15

php

1<?php 2//3.確認した内容を送信するページ 3 4session_start();//ログイン確認 5if(isset($_SESSION['login'])==false) 6{ 7 print 'ログインされていません' 8 exit(); 9} 10 11 12 $A=$_SESSION['A']; 13 print $A;//表示されない

試したこと

調べてみるとfavicon.icoによるものだとありましたので、追加してみましたが解決しませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2018/05/28 02:16

ページ間の相関関係がわかりません。またisset($_SESSION['login'])==falseでチェックに失敗したらログインページに飛ばして下さい
m.ts10806

2018/05/28 02:40

サーバーでの処理なのでブラウザ間で違いがあるようには思いませんが・・・。「$A=$_SESSION['A']=$_POST['A'];」を省略した記述ではなく1つ1つ記述した場合はどうなりますか?
ponchi00

2018/05/28 02:50

分けて記述してみましたが、変わりませんでした。相変わらずIEだとちゃんと内容が引き継がれています。
guest

回答2

0

自己解決

大変お騒がせいたしました。
コードの別部分に変数でURLを指定していた部分が原因だったようです。

php

1<div style="background-image:url(<?php print $sample; ?>)"></div>

該当箇所の変数を削除し、適当に文字を入れたところ、フォームで入力した内容のセッションが保持されるようになりました。
url(#)でもダメだったので、記号や空白ではダメだということなんですね。
別の指定方法を考えます。
根本的な原因はわかりませんが、一応目的の解決は致しましたので、ご報告させて頂きます。
ご回答くださった方々、ありがとうございました。

投稿2018/05/28 15:14

ponchi00

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

参考

  • login.php

PHP

1<?PHP 2session_start(); 3$_SESSION["login"]=1; 4$_SESSION["test"]=1; 5header("Location:x.php"); 6exit; 7?>
  • x.php

PHP

1<?PHP 2session_start(); 3if(isset($_SESSION["login"])==false) die("error"); 4if(isset($_SESSION["test"])) $_SESSION["test"]++; 5print_r($_COOKIE); 6?> 7<form action="y.php" method="post"> 8<input name="a" type="text"> 9<input type="submit" value="go"> 10</form>
  • y.php

PHP

1<?PHP 2session_start(); 3if(isset($_SESSION["login"])==false) die("error"); 4$a=filter_input(INPUT_POST,"a"); 5if(is_null($a) or $a===""){ 6 unset($_SESSION["a"]); 7}else{ 8 $_SESSION["a"]=$a; 9} 10if(isset($_SESSION["test"])) $_SESSION["test"]++; 11print_r($_SESSION); 12print_r($_COOKIE); 13?> 14<hr> 15<a href="z.php">z</a>
  • z.php

PHP

1<?PHP 2session_start(); 3if(isset($_SESSION["login"])==false) die("error"); 4if(isset($_SESSION["test"])) $_SESSION["test"]++; 5print_r($_SESSION); 6print_r($_COOKIE); 7?>

投稿2018/05/28 02:37

編集2018/05/28 03:58
yambejp

総合スコア114747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ponchi00

2018/05/28 03:42 編集

教えていただいたコードを参考に記述してみましたが、Chromeだとprint_r($_SESSION);の結果が消えてしまいます。IEでは保持されたままでした。原因はなにでしょうか? 消えるのはz.phpの段階です。
yambejp

2018/05/28 03:43

$_SESSION["login"]も消えていますか? であれば、chromeの設定でクッキーを拒否してたりしませんか? (サンプル更新します) $_SESSION["login"]は参照できて、$_SESSION["a"]は参照できないとなると ちょっと詳しく調べないとわからないですね
ponchi00

2018/05/28 03:44

loginは残っています。フォームで入力した内容のみ消えてしまいます。
yambejp

2018/05/28 03:45

クッキーのセッションIDはどうでしょう?
ponchi00

2018/05/28 03:57

セッションIDはどのページも同じでした。 今気が付いたのですが、Chromeだとprint_r($_SESSION);の結果のArray ( [login] => 1の部分の[a]自体消えてしまっています。これもなにか変なのでしょうか?
yambejp

2018/05/28 04:07

上記追記しました testの値がページ遷移ごとにインクリメントされますか?
ponchi00

2018/05/28 04:36

インクリメントはされましたが、ChromeとIEで結果が違いました。 Chromeでは5、IEでは4という結果になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問