phpでセッション変数が消える問題の解決方法

このQ&Aのポイント
  • phpでセッション変数が消える問題について解説します。
  • インプット画面から戻った時に最初のインプット画面で入力した内容が消えてしまう問題が発生します。
  • この問題の原因と対処法について詳しく説明します。
回答を見る
  • ベストアンサー

php $_SESSIONで値が消える。

いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? どうぞよろしくお願い致します。           記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

  • PHP
  • 回答数4
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

っていうか^^ 今回の回答としては、 「あなたが書いているプログラムは動いてます」 というものになります。 ただ、<form method="post"> Post先が書かれていない。(ただし、カレントへの送信なら間違いではない) <input type="submit" name="send" value="送信"/> } この閉じ括弧、HTML空間にPHPを書いてますよね? こちらでは、ちゃんと動いてますよ。 そちらで動いていないのであれば、 単に開発環境の作成を失敗してるだけでしょう。 ってことで、毎回同じミスするのをそろそろやめて、 今度こそ確実に動く環境を作ってください!。 動いてるか、動いてないかわからない開発環境は ないよりもひどいです。問題を増やしてるだけなので。 前回私が書いてあげたソース正しく動かしてください。 その上で、貴方の書いてるソースを試せばいいでしょう? 元々PHPが動かない状態で、他のPHPを試すことにどんな意味が? ってのが、最終回答です。 ですので今回の、貴方が書いたプログラムが動いてます。 多少間違いもあるが、動作自体はこちらで確認できました。 動いていないと思うのであれば、1行単位でトレースしてみれば 良いとは思います。

kouzou250
質問者

お礼

ご回答誠にありがとうございます。 貴方様が書いてくださったプログラムはこちらで実行し、キチンと動きました。 開発環境はXAMPPだけではダメでしょうか? XAMPPだけではダメでしたら、どんな開発環境がオススメでしょうか? そちらでは、戻った時、データがチャンと残っていたという事でしょうか? だとしたら、開発環境に問題がありますね。 どんな開発環境がオススメでしょうか? 度々申し訳ございません。 ご回答のほど宜しくお願い申し上げます。

その他の回答 (3)

回答No.6

画像がダメだったので、なぜかJavaを^^ @RequestMapping(value = "/hoge", method = RequestMethod.POST) String wow() { return ("im wow"); } Javaだと、アノテーションと実質1行だけで 表示出来て楽ですよね~。

回答No.3

<?php echo 'Hello World!'; ?> では間違っていますか? あってます。これは動きましたか? これの、実行結果をスクリーンショットしてもらっていいですか? それが終わったら、今回あなたが書いたプログラムの 実行結果も、あわせてみてみますので。 アップロードをお待ちしてます。 こちらから画像がアップできない件は、運営さんに 相談入れてるので、こちらは回答待ちなので、 しばらくは文字でしか難しいかなと思います。 あと、動いてしまえばJavaの方が簡単ですよ。 アノテーションでエンドポイント書けば、 GETだのPOSTだのすら不要ですし。 (そもそもアノテーションでPOSTって書けばPOST以外は来ないので  余計なバグが減って助かる)

回答No.2

もう一つ!原因はわかっているというか、前回私が書いたことを 貴方が無視したためなのですが。 1.まず基本となるHelloWorldを本当にやってますか? 2.本当にPHPを動かしたいなら、くだらない先入観をそろそろ   まじで!捨ててください。 3.このソース前回と同じですね。ってことは、貴方ではなく   他人が書いたものじゃないですか?自分が動いてるか   わからない物を、他人の手にゆだねる?途方もなく   馬鹿な行動です。自分で確実に動くものを作ってから、   他の人のテクニックを参考にするべきじゃないですか?   例:免許がない人が、プロのドライバーの     テクニックを勉強しても、そもそも、車にすら乗れない!。   でしょ? 超短く言いますが、 <?php phpinfo(); これを動かす気があるなら、道は開けるが、 無視して進むなら永遠に解決はしません!。 嘘じゃないですからね。 PHPの公式データも上げておきます。 https://www.php.net/manual/ja/function.phpinfo.php 他の人もみんなやってますから、貴方だけ これが動かなくても問題はない?って 思うのは勝手ですが、自分で道を閉ざすだけです。 次のアプローチとして貴方Javaをやったことがあると 言ってましたので、Javaにしてみるのはどうですか?

kouzou250
質問者

お礼

ご回答誠にありがとうございます。 <?php echo 'Hello World!'; ?> では間違っていますか? 他人が書いたものを参考にしましたが、丸写しではありません。一部をパクりました。 Javaはコンパイラ言語で正直言って、応用方法が解りません。 私は貴方様の書いたことを無視していません。 ただ、解らない箇所があるだけです。

関連するQ&A

  • php $_SESSIONでデータが残らない。

    いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? 今度はCSSなども書きます。 どうぞよろしくお願い致します。 記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="content-type" content="text/html" charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ブログ</title> <meta name="description" content="このWebサイトは、初めてHTMLで作るブログページです。"> <link rel="stylesheet" href="./css/style.css"> <style> body{ width: 100%; max-width: 800px; margin-top: auto; margin-left: auto; margin-right: auto; background-color: rgb(71, 133, 157); padding: 10px; text-align: center; } div{ background-color: rgb(247, 248, 245); padding: 2em; } script{ margin-top: 12em; } p { margin-left: 2em; text-align: left; font-size: 25px; font-weight: bold; color: rgb(10, 10, 10); } form { font-size: 25px; font-weight: bold; color: blue; } input { font-size: 25px; margin:auto; } </style> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • htmlとphpのデータ受け渡し???

    いつもお世話になり誠にありがとうございます。 標記の件。 まだ、ボク自身、解っていないようです。 htmlとphpのソースコードを提示します。 どうすればデータの受け渡しができるか? 添削してくださらないでしょうか? html <!--入力画面--> <form action = "./Blog.php" method = "get"> <label class="label" for="name">お名前(ニックネーム)</label> <center><input id="name" type="text" name="name"></center> <label class="label" for="e-mail">メール</label> <input id="e-mail" type="e-mail" name="e-mail"> <label class="label" for="category">カテゴリー</label> <input id="category" type="category" name="categoryl"> <label class="label" for="message">本文</label> <textarea name="area1" style="color:rgb(8, 8, 8); font-size:100%;" cols="50" rows="30"></textarea><br> <input type="submit" name="confiem" value="確認"> </form> CSS <meta charset="utf-8"> <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['e-mail'] = $_POST['e-mail']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['e-mail'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!--確認画面--> <?php if( $mode == 'input' ){ ?> お名前(ニックネーム)<?php echo $_POST['name'] ?><br> Eメール<?php echo $_POST['e-mail'] ?><br> カテゴリー<?php echo $_POST['category'] ?><br> 本文<br> <?php echo nl2br($_POST['message']) ?><br> <input type="submit" name="back" value="戻る" /> <input type="submit" name="send" value="送信" /> <?php } else { ?> <!--完了画面--> <?php } ?> 上記の通りです。 全然ダメだと思います。 添削のほど、宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • postによる、phpとの受け渡し???

    いつもお世話になり誠にありがとうございます。 標記の件。 フロントサイドはブラウザ表示されますが、サーバーサイドは 確認できません。 恐らくはphpが誤っているのでしょう。 質問の仕方が悪いですけど、フロントサイド、サーバーサイド共にソースコードを表示します。 フロントサイドは完璧ではないですけどOKです。 PHPが誤っています。 どうかどこが誤っているか、お教えてください。 下記にコードを表示します。 フロントサイド <!--入力画面--> <form action = "./Blog.php" method = "post"> <label class="label" for="name">お名前(ニックネーム)</label> <center><input id="name" type="text" name="name"></center> <label class="label" for="e-mail">メール</label> <input id="e-mail" type="e-mail" name="e-mail"> <label class="label" for="category">カテゴリー</label> <input id="category" type="category" name="categoryl"> <label class="label" for="message">本文</label> <textarea name="area1" style="color:rgb(8, 8, 8); font-size:100%;" cols="50" rows="30"></textarea><br> <input type="submit" name="confiem" value="確認"> </form> <!--確認画面--> <?php if( $mode == 'input' ){ ?> お名前(ニックネーム)<?php echo $_POST['name'] ?><br> Eメール<?php echo $_POST['e-mail'] ?><br> カテゴリー<?php echo $_POST['message']) ?><br> <input type="submit" name="back" value="戻る" /> <input type="submit" name="send" value="送信" /> <?php } else { ?> <!--完了画面--> <?php } ?> フロントサイドの<form></form>の部分と phpのコードをどうか見比べてください。 どう直せばいいでしょうか? フロントサイドをブラウザで表示し、確認ボタンがクリックされたら 確認画面が表示されるようにしたいのです。 ご多忙中恐れ入ります。 ご回答のほど宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 現在PHPにてsessionを使用したフォームを作成しております。

    現在PHPにてsessionを使用したフォームを作成しております。 現在、PHPは初心者で勉強中ですが悩んでいるため、ご質問させていただきます。 ソースは下記の通りです。 /* contact.php ----------------------*/ <html> <body> <form action="confirm.php" method="POST" > コメント:<br /> <?php echo $_SESSION['error_comment']; ?> <textarea name="comment"><?php echo $_SESSION['comment']; ?></textarea> <input type="hidden" name="contact" value="<?php $contact; ?>" /> <input type="submit" name="submit" value="確認" /> </form> </body> </html> /* confirm.php ----------------------*/ <?php session_start(); $comment = htmlspecialchars($_POST['comment']); if (isset($_POST["contact"])) { if (empty($comment)) { $_SESSION['error_comment'] = "コメントを入力してください!"; } if (!count($contact)) { $_SESSION["comment"] = $comment; header("Location: contact.php"); exit; } } else { $msg = '編集しました。'; } <html> <body> <?php echo $msg; ?> </body> </html> としております。 上記の内容でテストをするとcomment欄に入力されないと「コメントを入力してください!」と表示されますが、入力(テストと入力)をして確認をすると onfirm.phpのページは表示されずcontact.phpのcomment欄にテストと表示されたままです。 入力された場合はconfirm.phpを表示されせるにはどうしたらよろしいのでしょうか? お分かりの方がいらっしゃいましたら、ご教授お願いします。

    • ベストアンサー
    • PHP
  • SESSIONを使用したユーザ登録を作成しています。

    SESSIONを使用したユーザ登録を作成しています。 フォーム→確認ページ→登録完了という流れのページを作成しています。 ソースは下記のとおりになります。(文字数制限のため、ソースを省略しています。) フォームページ /* form.php */ <?php session_start(); ?> <html> <body> <form action="confirm.php" method="POST"> 名前:<input type="text" name="name" value="<?php echo $_SESSION["name"]; ?>" > <input type="hidden" name="regist" value="<?php echo $regist; ?>" /> <input type="submit" name="confirm" value="確認"> </form> </body> </html> 確認ページ /* confirm.php */ <?php session_start(); $regist = $_POST["regist"]; ?> <html> <body> 名前:<?php echo $name; ?> <form action="complete.php" method="post"> <input type="hidden" name="regist" value="<?php echo $regist; ?>" /> <input type="submit" name="submit" value="登録" /> </form> </body> </html> 登録完了ページ /* complete.php */ <?php session_start(); $regist = $_POST["regist"]; $link = DBNAMEなどの設定 $name = htmlspecialchars($_POST["name"]); $query = "INSERT INTO `user` (`name`) VALUES('$name')"; $result = mysql_query($query, $link); if ($result) { $msg = '登録しました。'; } else { $msg = '登録に失敗しました。'; } ?> <html> <body> <?php echo $msg; ?> </body> </html> としています。 ご質問なのですが、フォーム画面にて名前を入力して、確認画面では名前が表示されるのですが、登録完了では空の値になってデータベースに登録されてしまいます。 たぶん確認画面から登録完了画面への受け渡しができていないのはわかるのですが、記述方法がわかりません。 PHPは初心者のため、おわかりの方がいらっしゃいましたら、ご教授いただけないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのセッションについて

    PHPのセッションについて 現在ログインフォームを作成しているのですが、 ログインフォームからIDとパスワードを送信して、合っていれば セッションを発行してロケーションで飛ばそうと思っているのですが、 初回時にIDとパスワードを入力して送信しても、セッションが引き継がれず 2回目以降だとセッションが引き継がれる症状に悩んでおります。 どなたかご教授ください。 宜しくお願いいたします。 【login.php】-------------------------------- <?php session_name("stock"); session_start(); $error_flag = 0; if(isset($_POST["login"])){ $id = htmlentities($_POST["id"],ENT_COMPAT); $password = trim(htmlentities($_POST["password"],ENT_COMPAT)); if($login_id == $id && $login_pass == $password){ $_SESSION["id"] = $id; $_SESSION["password"] = $password; header("Location:stock.php"); exit; }else{ $error_flag = 1; } } echo <<<EOD <form method="post" action="login.php" id="login"> <input type="text" name="id" id="id" > <input type="password" name="password" id="password"> <input type="submit" name="login" value="ログイン" /> </form> EOD; 【stock.php】--------------------------------- <?php session_name("stock"); session_start(); echo $_SESSION["id"]; echo $_SESSION["password"]; ?>

    • ベストアンサー
    • PHP
  • セッションにIDを振って値を代入

    PHP初心者です。 PHP4.2.xを使っています。 ショッピングカートで購入した商品データをセッションで維持してカートに追加する機能部分を作っていますがうまくいきません。 コードは以下のとおりです。 【goods.php】 ----------------------------------------------------------- <? session_start(); ?> ■商品1 <form action="cart.php" method="POST"> <input type="hidden" name="id" value="1" /> <input name="num" type="text" /> <INPUT type=submit value="カートに追加"> </form> ■商品1 <form action="cart.php" method="POST"> <input type="hidden" name="id" value="2" /> <input name="num" type="text" /> <INPUT type=submit value="カートに追加"> </form> ----------------------------------------------------------- 【cart.php】 ----------------------------------------------------------- <? session_start(); if($_POST['id'] != ""){ $id = $_POST['id']; $num = $_POST['num']; // セッション名自体をIDで作っています。中身は個数のみです。 $_SESSION["$id"] = $num; } echo "カートに入ってる商品<br />"; for ($i = 0; $i<=100; $i++) { if (!empty($_SESSION["$i"])){ echo $_SESSION["$i"]. "<br>\n"; } } ?> ----------------------------------------------------------- goods.phpのファイルで商品1と商品2を1つずつカートに入れれば cart.phpのページで 1 1 と表示されるはずが、1しか出ません。 $_SESSION["1"] $_SESSION["2"]の中身が表示される予定でしたがそうならず、 そのときPOSTで投げられたIDしか$_SESSION["$id"]に保持されません。 どうすればどんどん商品をカートに追加できますでしょうか? アドバイスのほどどうぞよろしくお願いします!

    • ベストアンサー
    • PHP
  • PHPのSESSIONを使用したメールフォームについてご質問があります

    PHPのSESSIONを使用したメールフォームについてご質問があります。 PHPを現在勉強中のため、ご教授いただければと思います。 ソースは下記のとおりです。 /* index.php */ <?php session_start(); ?> <html> <body> <form action="confirm.php" method="post"> <?php echo $_SESSION['err_category']; ?> <select name="category" id="category"> <option value="">-- 選択してください --</option> <option value="お問合せ">お問合せ</option> <option value="お申し込み">お申し込み</option> <option value="その他">その他</option> </select> </form> </body> </html> /* confirm.php */ <?php session_start(); $category = $_POST['category']; $errFlag = false; if(!strlen($category)) { $_SESSION['err_category'] = "<p class=\"error\">お問合せ項目を選択して下さい。</p>"; $errFlag = true; } else { unset($_SESSION['err_category']); } if($errFlag) { $_SESSION['category'] = $category; $_SESSION['errFlag'] = $errFlag; header('Location: ./'); exit; } ?> <html> <body> <?php echo $category; ?> <a href="javascript:history.back();">戻る</a> </body> </html> としているのですが、フォーム(index.php)でプルダウンの項目を選び、確認画面(confirm.php)から戻るを押すとフォームのページにてプルダウンの項目が選択してくださいに戻ってしまいます。 戻るを押しても、項目が選択されている状態にするにはどうしたらよろしいのでしょうか? ここで2日ほどつまずいているため、どなたかご教授いただけないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • phpがうまく動きません。

    phpで4択のクイズを作りたいのですが 正解のラジオボタンを選んでもカウントされないのと 答え合わせを押すと正解だった箇所を赤く表示したいのですがなんて書けばよいのか どこにそのコードを入れるのかよくわかりません <状態> ・5つのデータがmyadminに保存されています ・データベースの内容は表示されます。 ・答え合わせを押すと正解のラジオボタンを選んだ数が表示されるようにしたいです ・保存ボタンは閉じても答えを保存するためにあります ・q_noは8ケタ固定であり、左から5つ目までは固定であと3桁は999問入れられるよう設定してあります ・q_ansはデータベースに答えの値(1~4)が入れてあります ・データベース名はproblemです <省略> $res_set = mysql_query($sql); while ($row=mysql_fetch_array($res_set)){ ?> <form method="POST" action="H2102.php"> <?php echo $row['q_no'] . " "; ?> <br> <?php echo $row['q_text'] . " "; ?><br><br> <br> <?php echo "ア"; ?> <input type="radio" name="q_ans" value="1"> <?php echo $row['q_point1'] . " "; ?> <br><br><br> <?php echo "イ"; ?> <input type="radio" name="q_ans" value="2"> <?php echo $row['q_point2'] . " "; ?> <br> <br><br> <?php echo "ウ"; ?> <input type="radio" name="q_ans" value="3"> <?php echo $row['q_point3'] . " "; ?> <br><br><br> <?php echo "エ"; ?> <input type="radio" name="q_ans" value="4"> <?php echo $row['q_point4'] . " "; ?> <br><br><br> <br> <input type = "submit" name="save" value="保存"> <?php if(isset($_POST['save'])){ $_SESSION['save'] = $_POST['q_ans']; //保存すると選んだ回答を保存 } ?> <?php } ?> </form> <form method="POST" action="H2102.php"> <input type = "submit" name="ans" value="答え合わせ"> <?php //正解かどうかをチェック if(isset($_POST['ans'])){ $a = $_SESSION['a']; if($row['q_no'] == $_POST['q_no'] && $_POST['q_ans'] || $_SESSION['save'] == $row['q_ans'] ){ $_SESSION['a'] = $a + 1; //q_noが一致かつ保存した値または選んだ解答(値)が一致していれば1問につき1つカウントする $a = $_SESSION['a']; } echo $a; //カウントされているかをチェック } ?> <input type = "submit" name="del" value="カウント初期化"> <?php if(isset($_POST['del'])){ session_unset(); } ?> </form> <br> <?php } ?> 足りない情報があれば追記します

    • 締切済み
    • PHP
  • sessionが分かりにくいです

    try4.html <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <title>カンタンアンケート</title> </head> <body> <form action='try4-2.php' method='GET'> 性別:<br> <input type="radio" name="gender" value=0>男性 <input type="radio" name="gender" value=1>女性<br><br> 趣味(複数選択可):<br> <input type="checkbox" name="movies" value=1>映画  <input type="checkbox" name="music" value=1>音楽  <input type="checkbox" name="books" value=1>読書  <input type="checkbox" name="sports" value=1>スポーツ<br><br> ご意見をお書きください:<br> <textarea name="comment" rows="4" cols="40"></textarea><br><br> <input type="submit" value="送信"> <input type="reset" value="リセット"><br><br> </form> </body> </html> ////////////////////////////////////////////////////// try4-1.php <?php session_start(); ?> <html> <head><title>try4-1.php</title></head> <body> <?php $_SESSION = array(total_cnt => 0, male => 0, female => 0, movies => 0, music => 0, books => 0, sports => 0, comment => array("")); ?> //////////////////////////////////////////////////////////////// try4-2.php <?php session_start(); ?> <html> <head><title>try4-2.php</title></head> <body> <?php if ($_GET['gender'] == 0) ++$_SESSION['male']; elseif ($_GET['gender'] == 1) ++$_SESSION['female']; if ($_GET['movies']) ++$_SESSION['movies']; if ($_GET['music']) ++$_SESSION['music']; if ($_GET['books']) ++$_SESSION['books']; if ($_GET['sports']) ++$_SESSION['sports']; $_SESSION['comment'][] = $_GET['comment']; ++$_SESSION['total_cnt']; ?> 登録しました。さらに<A href="try4.html">入力する</A><br> これまでの集計結果を<A href="try4-3.php">表示する</A><br> </body> </html> ////////////////////////////////////////////////////////// try4-3.php <?php session_start(); ?> <html> <head><title>try4-3.php</title></head> <body> <?php echo "これまでにアンケートに応えたのは{$_SESSION['total_cnt']}人です。そのうち<br>"; if ($_SESSION['total_cnt']){ $male_rate = (int)($_SESSION['male'] / $_SESSION['total_cnt'] * 100); $female_rate = (int)($_SESSION['female'] / $_SESSION['total_cnt'] * 100); } else { $male_rate = 0; $female_rate = 0; } echo "男性:{$_SESSION['male']}人 $male_rate %<br>"; echo "女性:{$_SESSION['female']}人 $female_rate %<br><br>"; echo "趣味は映画:{$_SESSION['movies']}人、音楽:{$_SESSION['music']}人、読書:{$_SESSION['books']}人、" . "スポーツ:{$_SESSION['sports']}人<br><br>"; echo "意見:<br>"; foreach ($_SESSION['comment'] as $comment) echo $comment . "<br>"; ?> 集計を<A href="try4-1.php">初期化する</A><br> さらに<A href="try4.html">入力する</A><br> </body> </html> //////////////////////////////////////////////////////// とファイルが4つあるのですがセッション情報はどこに格納されているのでしょうか。TXTファイルでもなさそうなので教えて下さい。

    • ベストアンサー
    • PHP

専門家に質問してみよう