• ベストアンサー

PHPでページをまたがった変数の渡し方

何かを書き込むページを作った場合に 1・書き込むページ → 2・確認画面 → 3・完了通知画面 1→2は普通にpostで値を渡しますが、2→3の場合は2のページでフォームの形にして hiddenで値を渡すのが通例なのでしょうか。 COOKIE等に入れるのはナンセンスでしょうか。

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

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.5

まず、1 → 2 でユーザ入力の検証をすると思うんだけど、 2 → 3 で Cookie か hidden のどちらかを使うとユーザがそのタイミングで関与できるから、データが汚される危険があるよ。 どうせ 1 → 2 でユーザ入力の検証するなら、1 → 2 で既に決定済みのセッション変数を 3 で処理するのが素直かな。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

>hiddenで値を渡すのが通例なのでしょうか。 セッションで渡す方が最近のシステムでは多いかもしれませんね。 クッキーは制限が大きいので取り回しづらいと思います。 個人的にはhiddenを使うことがおおいです

全文を見る
すると、全ての回答が全文表示されます。
  • mikemike7
  • ベストアンサー率87% (97/111)
回答No.3

No1、No2の方が仰っているようにどっちでも良いと思います。 ただNo1の方が記載している通り、CookieをOFFにしている方もいますので、どれだけ大事な情報を記憶するかによりますが、場合によってはログとして保存ということもありかもしれません。 以前に、SQLiteを使ってIPアドレス単位でセッション化させ、受け渡したい情報をログ保存したことがあります。 IPアドレスは一定期間は重複することが少ないし、CookieがOFFでも関係ないですので。 SQLiteはファイルベースのデータベースなので、扱いやすいし、軽いので簡単なログを保存するには良いと思います。 ログ保存をする以上、定期的にメンテナンスする必要はありますけど、確実性は向上するかなと思います。

全文を見る
すると、全ての回答が全文表示されます。
noname#201981
noname#201981
回答No.2

こんばんは。元PHP開発者です。 携帯電話などの開発の時は、cookieに必要な値を入れて、次のページでDBと照合したりしていました。 別にどっちを使っても良いと思います。 携帯の場合、postできる値にも限りがあったからそういう処理をしたんだと記憶しています。

全文を見る
すると、全ての回答が全文表示されます。
  • 4017B
  • ベストアンサー率73% (1308/1782)
回答No.1

いや、どっちでもイイと思いますよ。 ただ、Cookieを使う場合だと、未だにCookie機能を停止して置く事が格好イイと思ってる人も居ますので。そういったUserがアクセスして来た場合、予定の動作をしない事になりますね。 <input type="hidden">~の形ならば、とりあえずHTMLを最低限、読み込ませる事が出来る環境ならば、確実に引数とかを受け渡す事が出来ます。 ただしHTMLソースを読む事で簡単に情報が閲覧者側にも知れますので、重要な情報(個人情報など)は最低限の暗号化処理などが必須になります。しかしこれはCookieの場合も同じ事が言えますので…。まあ、要は好みの問題かと(今時、Cookie機能を切ってるUserは切り捨てても問題無いかと→自己責任というヤツです)。 P.S. Cookieを使う場合は、単純にページ間の情報の受け渡しじゃなくて。複数ページにまたがって、何かサイト全体に影響を与えるような情報を保持する場合に使うのが吉かと。まあいちいちCookie処理を個別に行うのが面倒じゃないのなら、本当にどっちでも良いと思います(笑)。 ああ、でも一応。Cookieには保存出来る文字数制限があるので。あまり大きな情報を扱うには向いてません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHP 配列の受け渡し

    現在PHPでアンケートフォームを作成しているものです。 フォーム⇒確認画面⇒登録完了画面 と3モジュールを経由します。 配列の受け渡しで問題が発生しています。 フォーム⇒確認画面では問題なく配列の値がわたってきているのですが。 確認画面⇒登録完了画面ではわたってきません。 $a = $HTTP_POST_VARS["a"];(←配列変数:a) <input type=hidden name=a value=$a> とアンケートフォーム、確認画面両モジュールとも上記のような書き方で渡しています。 変数名を変えたりといろいろしていますが うまくいきません。 アドバイスお願いします。

    • ベストアンサー
    • PHP
  • 会員ページのフォーム処理について

    ただ今会員(ログイン)ページの中の申し込みフォームを 入力画面→確認→投稿という形で作ってまして 作成手順は入力画面でポストされたものをセッションに代入、 値を保持しながら確認→投稿という形で作成しました。 申し込みフォーム自体は問題がないのですが、 例えば、入力画面から確認に行き、そこから投稿せず会社概要など 他のページに移動して再度入力画面にいくと以前入力された値が 表示されてしまいます。おそらくセッションが残ったままに なってるのが原因だとは思います。 入力画面←→確認←→投稿は値を保持させ他のページに飛んだ場合は 値を消去するやり方を教えていただけませんか? アドバイスよろしくお願いします。

    • 締切済み
    • PHP
  • phpによる画像添付メール送信フォームについて

    画像添付のメール送信フォームの件です。 下記のような流れになっています。 1.送信フォーム  ↓ 2.確認画面  ↓ 3.送信完了 1のPOSTから2のPOSTまで、$_FILES['hoge']['tmp_name']の値を引き継げないようなので、 1のPOST送信時に$_FILESの画像を一旦サーバに保存する必要があります。 確認画面から前に戻る場合や戻るボタンを押された場合には、 一時保存した画像を削除することができますが、 2の確認画面でブラウザを閉じてしまった場合は、 一時保存画像がサーバ上に残ってしまうことになります。 これを防ぐ方法はありませんでしょうか? 確認画面をなしにすれば、サーバ上に画像が残ることを防げますが、 確認画面がどうしても必要になるため、 $_FILESの値を引き継げない現状では、 定期的にcronで、一時保存画像を掃除するくらいしか思いつきません。 それ以外に良い方法はありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ページを切り替えずにphpに値を渡したい。

    メインのページの入力フォームからoutput.phpにページを切り替えずに値を渡したいのですがどうしたらいいですか? <form action="output.php" method="post"> <input type=text name="text1"> <input type=submit value="変更"> </form> このようにやるとページがきりかわってしまいます。フォームと言う方法にこだわってるわけではありませんのでちがうほうほうでもいいので教えてください。

    • ベストアンサー
    • PHP
  • 変数を複数ページにわたって保持するには?(Smarty)

    メール送信画面を作成しています。 まだPHP・Smarty初心者なので四苦八苦です。 Smartyに関する質問です。 画面A→画面B→画面C・・・ のように、複数ページにわたって変数を保持するにはどうしたらよいのでしょうか? 画面BやCになったときに <input type="hidden" value="{$smarty.post.NAME}"> のように、毎回hiddenを用いる方法しか思いつきません。 もっと簡単な方法があれば、どなたかご教授お願いいたします。

    • ベストアンサー
    • PHP
  • 配列の値の引渡し

    目的: 配列の値をフォームによりCSVに書き込みたい。 1.php 値入力 2.php 確認画面 for($i = 0;$i < count(@$_POST["q1"]); $i++){ echo "<p>" .$_POST["q1"][$i]; } として、1.phpで入力された値を表示 また、 <input type="hidden" name="q1[]" value="<? echo $q1[$i] ?>"> として、3.phpに値を引き渡すことをしているのですがうまくいきません。 3.php 完了画面 CSVに書き込み処理 アドバイスよろしくお願いします。

    • 締切済み
    • PHP
  • PHPとHTMLを使って(早急にお願いします)

    はじめまして。 課題のデータが消えてしまい早急の提出物になるので 丸投げになるんですがどうかよろしくおねがいします。 ブラウザのフォームを使って携帯電話の形式チェックが行えるようにする。 フォームの内容 1、入力欄 形式:test name値:mobile value値:空(初期値) 2、サブミットボタン value値:確認する 3、フォームメソッド post 携帯番号入力後「確認する」ボタンを押す (1)入力フォーム再表示 (2)入力フォームのmobileの欄に入力した携帯番号表示 (3)入力した値が携帯番号の形式だったら「携帯番号です」と画面表示 (4)入力した値が携帯番号ではない場合「携帯番号じゃありません」と画面に出力 ファイル名 mobile.php ※PHPでpostメソッドを利用して送信したデータはスーパーグローバル変数の$_POSTに格納される よろしくお願いします。

    • 締切済み
    • PHP
  • ページを更新できないようにするには

     Rubyで掲示板システムを作成しています。  CGIでフォームで書き込みをした後に表示されたページで,ページの再読込をすると,再び書き込まれた風になってしまいます。CGIの処理の方法は, Web上:  掲示板のフォーム内のhiddenフォームでCGIのcase文で書き込みを行うプログラムへ移行するように値を設定してある。送信ボタンを押すと,CGIを呼び出し,   ↓ CGI上:  hiddenの値から,書き込みのプログラムであるとcase文で分岐させ,受け取ったフォームの値を書き込む。書き込んだ後,そのプログラムから掲示板を表示するプログラムを呼び出し,printでHTMLソースを渡す。   ↓ Web上:  掲示板が表示される。 (CGIのプログラムは書き込みも表示も同じファイルで行い,その動作はhiddenフォーム内のmodeの値で分岐してある) のような流れになっています。printで表示されているので,ブラウザのurlに,書き込みの動作を行うhiddenフォームの値その他の入力されたデータが残っているからだと思います。  そこで,ブラウザの方から更新(できれば戻る,進むも)を使えないようにできないでしょうか。  ご教授お願いいたします。 (ちなみにCGIのプログラムの方で再読込をしても書き込まれないようにできるのでしょうか)

  • phpでcookieをセットする方法

    こんにちは。php4 apacheです。 簡単なログインのシステムを作りたいのですが、cookieのセットでつまづいてしまいました。 ちなみに前の質問は http://oshiete1.goo.ne.jp/kotaeru.php3?q=374947 です。 http headerは本文の前に送信しなければいけない事は教えていただいてわかったのですが、では具体的にどう記述したらいいのかまだわかりませんのでお力をいただければと思います。 やりたい事は、ページ1のテキストボックスに入力した値をページ1をサブミットさせてページ2にとばし、ページ2で、フォーム値があればその値をcookieにセット、なければそのままロード、ということをしたいのですが・・・。 ページ2の一番最初に、「もしフォーム値があればcookieをセット、 なければ(すでにcookieが存在するはずなので)そのままロード」 という処理を記述しているのですが、やはり前質問と同じエラーが出てしまいます。 cookieをセットする場合、if文すらその前に記述してはいけないのでしょうか・・・? とすると、こういう場合はどう記述してやるのが通常なのでしょうか? 何分仕事中なもので、返事が遅れることがあると思いますがアドバイスのほど宜しくお願い致します。

    • ベストアンサー
    • 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
このQ&Aのポイント
  • ネット通販でムギ球を購入しようとしていますが、40mAと60mAの違いがわかりません。どのmAを選べばいいのでしょうか?
  • ムギ球のmAに注目していますが、40mAと60mAの違いについて教えてください。どちらを購入すべきでしょうか?
  • 購入したいムギ球のmAについて悩んでいます。40mAと60mAには何か違いがあるのでしょうか?
回答を見る