• 締切済み

PHPでセッションを使用する場合のデータの受け渡し

お世話になります。 入力フォームの内容をセッションで保持し、情報を次ページへ受け渡す方法が知りたいです。 HTMLは組めるのですが、PHPは初心者のためどのように記述すればよいかが不明です。 ページの流れとしては以下のとおりです。 入力フォーム→画像選択画面1→画像選択画面2→画像選択画面3→確認画面→送信 次ページへ行くごとにデータを渡し、次ページで受け取るようにし、最終的にすべての情報を送信可能にしたいです。 おそらく最初は「<?php session_start(); ?>」で、その後が不明です。 お手数ですがよろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数10

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>おそらく最初は「<?php session_start(); ?>」で、その後が不明です。 session_start()すれば、変数$_SESSIONが使ってデータを引き渡せます。 データを受け取ったスクリプトで $_SESSION['data_1'] = $_POST['data_1']; としておけば、その値が次のスクリプトで$_SESSION['data_1']にセットされた状態になります(session_start()で$_SESSIONにセットされる)。 http://php.net/manual/ja/session.examples.basic.php

5620246
質問者

お礼

select.php→select2.php→check.phpの順で ◯各ページに以下を追加 <?php // セッションの開始 session_start(); $name = htmlspecialchars( $_POST[ 'name' ], ENT_QUOTES ); $email = htmlspecialchars( $_POST[ 'email' ], ENT_QUOTES ); $message = htmlspecialchars( $_POST[ 'message' ], ENT_QUOTES ); $_SESSION[ 'name' ] = $name; $_SESSION[ 'email' ] = $email; $_SESSION[ 'message' ] = $message; ?> ◯select.phpの一部を以下にする <input type="hidden" name="name" value="<?php echo $name; ?>" size="30" id="name" class="text1" placeholder="例)山田太郎" autofocus required> <input type="hidden" name="email" value="<?php echo $email; ?>" size="30" id="email" class="text2" placeholder="例)xxx@example.com" required> ◯select2.phpの一部を以下にする <input type="hidden" name="message" value="<?php echo $message; ?>"> ◯check.phpで上記3項目を表示 上記でセッションの受け渡し確認が出来ました。 ありがとうございました。 次は画像の選択画面です。 以下サイトなどを参考にしてみます。 http://symfo.web.fc2.com/js-sample/jq/sample4.html

5620246
質問者

補足

さっそくの回答をありがとうございます。 イメージとしては下記のようなサイトで http://photobook.kitamura.jp/yearalbum/ 1.始めに入力フォームでタイトル名や仕様を選択し、送信を押す ↓ 2.次の画面が開いて、1ページはこの写真を入れるで写真を選択する(セッションに記憶する)、次の画面を押す ↓ 3.上記と同じく次の画面が開いて、2ページ目はこの写真を入れるで写真を選択する(セッションに記憶する)、次の画面を押す ↓ 4.上記と同じく次の画面が開いて、3ページ目はこの写真を入れるで写真を選択する(セッションに記憶する)、次の画面を押す ↓ 1~4の注文確認画面が開く ↓ 送信を押すと、メールで注文内容が送信されるような感じのものをPHPで作成したいのです。 <? php session_start(); $_SESSION['data_1'] = $_POST['data_1']; ?> 上記コードを各ページに入れれば、入力フォームのセッション情報を受け渡しして、送られるのでしょうか? すみませんが、よろしくお願いします。

関連するQ&A

  • PHP セッション情報のDBへの受け渡し

    お世話になります。 標題の件について、以下のとおり説明します。 (1)1ページ目:入力フォームで入力した情報をセッションに保持 (主にプルダウンメニューの情報とテキスト) submitボタンで次画面へ ↓ (2)2ページ目:サムネイル写真をクリックした情報を保持+インラインフレームで拡大写真表示 (クリックした情報をプルダウンメニューに表示してセッションへ保持) submitボタンで次画面へ ↓ (3)3ページ目:サムネイル写真をクリックした情報を保持+インラインフレームで拡大写真表示 (クリックした情報をプルダウンメニューに表示してセッションへ保持) submitボタンで次画面へ ↓ (4)4ページ目:上記内容の確認画面 submitボタンで次画面へ ↓ (5)送信 現状、上記の流れでセッション情報を保持しつつメールでの送信が確認出来ています。 ですが、ページ遷移で確認画面から前画面へ戻って、例えば2ページ目の写真を変更して、submitで次画面へ遷移すると、3ページ目の情報がなくなり新たに写真を選択する必要になってしまいます。 なので、ページを前後遷移しても情報が保持された状態にするには、どうすれば良いでしょうか? データベースを使わないと出来ないことでしょうか? データベースに関しても勉強しておりますが、セッション情報をDBへ登録して、その後ページを遷移した場合に、データベースから呼び出すようなイメージなのでしょうが、それにはどうすれば良いのかが不明です。 お手数ですが、ご教授の程、よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP セッションの受け渡しと取得

    お世話になります。 サムネイル画像を下記で表示させ、 <button type="button" onclick="window.open('1.html','main');" name="写真1" value="<?php echo $file1; ?>"><img src="1S.jpg" width="150" height="110"></button> 上記の画像クリックすると拡大表示するようにしています。 その際、画像のname値「写真1」を保持したまま、次ページへ受け渡して取得したいのですが、 どうすれば良いでしょうか? 下記はサムネイル画像のページと次ページどちらにも入れております。 <?php // セッションスタート session_start(); $file1 = isset($_SESSION['file1']) ? $_SESSION['file1'] : ''; $_SESSION[ 'file1' ] = $file1; ?> 表示箇所には下記を入れています。 <?php echo $file1; ?> どなたかご教授をお願いします。

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

    PHPのセッションについてお尋ねします。 1ページ目でテキストボックスに値を入力させ、ポストで送信。 2ページ目でポストを受け取り、項目が正しく入力されているかチェック。 3ページ目でMySQLに書き込み というシステムを作りかけています。 2ページ目までは上手くできたのですが、2ページ目の変数を3ページ目で渡すところで滞っています。 ザッと調べてみるとセッションというのを駆使して変数の受け渡しができるようなのですが、このセッションの書き方がよくわかりません。 session_start()を入れてみましたが、次のページには引き継がれていませんでした。更に記述が必要なのでしょうか? お詳しい方、詳説または詳説ページの紹介をお願いします。

  • PHPでSESSIONによる変数の引き継ぎ

    PHPで問い合わせフォームを作ろうと勉強し始め、とりあえず簡単なものをと思っているのですが、入力フォームを作り次にチェックフォームへ移動した段階で以下の記述を入れています。 <?php session_start(); $_SESSION['name'] = $_POST['name']; echo htmlspecialchars($_SESSION['name']); ?> そしてチェックフォームの次のページで内容をメールで送るつもりなのですが、 チェックフォームから次のメールを送るページに移動した段階で <?php session_start(); echo htmlspecialchars($_SESSION['name']); ?> と記述しても、作成しているMacbookair2014では表示されているのですが、 スマホやWindowsでは表示されません。 どの環境でもチェックフォームまでは表示されているので、最後の引き継ぎがきちんと出来ていないだけだと思うのですが、何が足りないのでしょうか? 分かりにくい文章で申し訳ありませんが、どなたかお分かりの方ご回答よろしくお願いします。 情報が足りなくて分からない場合はすぐに答えます。

    • 締切済み
    • PHP
  • インラインフレーム内のセッション

    通常のHTMLファイルのインラインフレーム内に、別サーバーからPHPファイルを取得して表示しています。 そのPHP自体は簡単なアンケート(フォーム→入力内容確認→送信)なんですが、このフォーム→入力内容確認の遷移がうまくいきません。 セッションでフォーム内の値と送信ボタンの値(sub)を保持し、確認のファイルに if(@$_SESSION['sub']!=TRUE){ header("location:form.php"); exit(); }else{ (以下略) } と記述することで、もしURL直打ちの場合はフォームの入力画面に飛ばされるようにしてあるのですが、インラインフレームの中でフォームに入力して送信ボタンを押すと、強制的に同じ画面に戻ってしまうのです。 直接ブラウザで該当のPHPを見たときは、何の問題もなく動くので、プログラム自体にエラーがあるわけではないと思うのですが・・・。 どうも確認ファイルのif(@$_SESSION['sub']!=TRUE)で、セッションがうまく保持されていないためにheaderで飛ばされてしまっているらしいのですが、インラインフレーム内でセッションを利用するときはどうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • php入力画面から確認画面へ情報の受け渡しについて

    php 参考書を見て、入力フォームを作成しているのですが、入力画面から確認表示画面へ情報の受け渡しについて。コードは下に記載してます。 最初の入力画面ではmethod=postで送信した値を$name = $_POST['name'];に格納して次ページに値を渡すそうですが、 しかし最初の入力画面のコードに$name = $_POST['name'];と、もうひとつ、$name = $_SESSION['name'];でセッションに保存して、次ページに送るそうですが、 保存したSESSIONの値は次ページの確認表示画面から戻る際に値を保持する際に使うからだそうですが、値を次ページに送る役割が$_POSTやSESSIONにあるならば、SESSIONの記述のみで 次ページに送れると思うのですが、なぜこのコードの場合、$_POSTに値を格納する必要があるのでしょうか? 以下のような解釈で正しいでしょうか?? 「$_POSTは送られた値をフォームのvalue内にechoで出力するため、SESSIONはページから戻る場合に値を保持するため」 回答よろしくお願いいたします。 コード 入力初期画面 <?php session_start(); $errors = array(); if(isset($_POST['submit'])){ $name = $_POST['name']; if($name === ""){ $errors['name'] = "お名前が入力されていません。"; } if(count($errors) ===0){ $_SESSION['name'] = $name; header('Location:https:次ページへform2.php'); exit(); } } ?> <body> <form action="form1.php" method="post"> お名前 <input type="text" name="name" value="<?php if(isset($name)){echo $name;}?>"> <input type="submit" name="submit" value="確認画面へ"> </body> コード 確認表示画面 <?php session_start(); if(isset($_SESSION['name'])){ $name = $_SESSION['name']; } <body> <form action="form3.php" method="post"> お名前 <?php echo $name;?> <input type="submit" name="submit" value="送信する"> p><a href="form1.php?action=edit">入力画面へ戻る</a></p> </body>

    • ベストアンサー
    • PHP
  • セッション使用時のフォームのデータ

    PHPでsession_start();とした後のフォームで、その後にフォームで入力したデータをPOSTで送って確認画面を表示したとします。 ここで、最初のsession_start();がなければ、ブラウザの戻るボタンで前のフォーム入力画面へと戻っても、入力したデータは保存されたままですが、session_start();とした後では、入力したデータが全てクリアされてしまうようです。 ちょっと修正したい時に、すべてクリアされてしまうとかなり不便なのですが、何かよい方法はないものでしょうか?セッション変数にPOSTするデータを保存する以外で方法はないものでしょうか?

    • ベストアンサー
    • PHP
  • PHPの入力フォームのセッションによる値の受け渡し

    PHPの入力フォームに関するフォームの 値の受け渡しについての質問です フォームのフィールドの値の名前はtitleです で$_POSTで値を受け取って$_SESSIONに値を 格納、変数で出力という感じにしたいと思い こう書きました <?php session_start(); $_POST['title']=$_SESSION['tit']; $_SESSION['tit']=$title; ?> <html> <head> <title>test</title> </head> <body> <?php echo $title; ?> </body> </html> こう書いたのですが、値が表示されません 画面が真っ白になってなにも見えないです なにがおかしいのか教えてください issetはあえて使わず書いたのですが それがいけなかったのでしょうか?

    • 締切済み
    • PHP
  • session_start();について

    以下のような処理を行なっております。(a.php~e.php) 入力情報保持のため、セッションを利用しております。 そこで、a.php~d.phpの全てのページの最初に session_start(); を記述しております。 ワーニングで 「Notice [PHP]: A session had already been started - ignoring session_start()」 といった旨のメッセージが出るのですが、サイト内でセッションを利用する場合、 最初(この場合だとa.php)だけに session_start(); を記述すればよいのでしょうか。 セッションを利用するページ全てに記述するという認識でいたのですが・・・ 御教授頂ければと思います。 a.php 情報ページ セッションの開始 b.php 入力情報チェック ↓ c.php 入力情報確認ページ d.php 入力情報登録 セッション破棄 e.php 登録完了ページ 環境 phpバージョン4.3.11 xoopsにて使用

    • 締切済み
    • PHP
  • 携帯サイトでsessionは使用可能か

    HTML・PHPで3キャリア対応携帯サイトを作成しているのですが、session_id()などのセッション関連は携帯サイトでも使用できるのでしょうか? 例えば、ログインページで入力フォームの値(IDとパスワード)をsesession_id()で次のページに渡す際(header("Loca"))、PCのブラウザ(IE)では値を渡せ、かつ、次のページに進んだのですが、i-modeのエミュレータ(imodetool)では、次のページに移らず、ログイン画面に戻ってしまいます。 なお、ソースは以下のように記述しています。 if($_POST["name"] == XXXX) { session_start(); $_SESSION["user_id"] = $_POST["name"]; header("Location: http://xxxxxxxx.php?id=". session_id()); exit(); } お手数ですが、回答頂けると幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう