- 締切済み
$_POST['hoge']のデータをフラッシュするには
<form method="post" action=""> <input type="text" name="hoge1" value="$_POST['hoge1']"> <input type="text" name="hoge2" value="$_POST['hoge2']"> <input type="submit" value="送信"> </form> データ送信してもフォーム内にデータが残るようにしたのですが、HTMLをこのままにして、PHPの方で$_POST['hoge']の中身を消去したいのですが、どのようにすればいいでしょうか? 記入漏れの時にはそのデータが残り、すべてを記入してデータ送信後は再び何も書かれていない状態にしたいのです。できれば、Javascriptを使わないでやりたいと考えています。よろしくお願い致します。
- wataj
- お礼率83% (133/160)
- PHP
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- shimix
- ベストアンサー率54% (865/1590)
>条件付きで決めたいのです。つまり、フォームに記入漏れがない場合は >送信してクリアし、記入漏れがある場合は送信しないで引き継ぐのです。 あ、わかりました。「送信」という言葉はフォーム→スクリプトを指すのが普通なのですが、この場合はスクリプトからDBへのinsertなどのことですね。 >(ちなみに、その入力データはそこで確認することができます。) というのは記入漏れがあった場合だけ確認可能ということですね。こちらも了解しました。 #インタフェイスの良否は本題じゃないので、これまでにします。 本題については、No.2のinu2さんの方法でOKだと思います。どのみちPOSTされた値は「そのまま」では使わない(使えない・使うべきではない)でしょうしね。
- shimix
- ベストアンサー率54% (865/1590)
>記入漏れの時にはそのデータが残り、すべてを記入してデータ送信後は >再び何も書かれていない状態にしたいのです。 >入力データを送信した後、OK画面を出すことなく、また同じ画面に戻る >ようになっています。 >(ちなみに、その入力データはそこで確認することができます。) >ですから、$_POST['hoge']の値は(条件付きで)そのまま引き継がなく >てはいけないのです。 結局、クリアしたいのですか?引き継ぐのですか?このインタフェイスでは記入漏れで受付不可だったのか、ちゃんと受け付けられたのか使用者には判断が出来にくいと思いますけど。(条件付きで)という条件とかどういうものでしょうか?せめて「受付OK」→「所定の処理」→「そのことを伝える画面(戻るための自分へのリンクつき)を表示してexit」くらいは簡単にできるのでは?それとも「そういう仕様」なんでしょうか?
お礼
> クリアしたいのですか?引き継ぐのですか? 条件付きで決めたいのです。つまり、フォームに記入漏れがない場合は送信してクリアし、記入漏れがある場合は送信しないで引き継ぐのです。 > このインタフェイスでは記入漏れで受付不可だったのか、ちゃんと受け付けられたのか使用者には判断が出来にくいと思いますけど。 入力と出力が同じ画面にあると考えてください。使用者にはそれが受け付けられたということが送信後の画面(同一画面)でわかるわけです。
- inu2
- ベストアンサー率33% (1229/3720)
ブラウザで入力 ↓ ---------------------------hoge.php内の処理 $hoge1 = $_POST['hoge1']; $hoge2 = $_POST['hoge2']; $message = ''; ↓ if($hoge1と$hoge2が両方とも記入されているか) { //保存するなどの処理 $message = '保存しました'; $hoge1=''; $hoge2=''; } ↓ ptint $message; print '<input type="text" name="hoge1" value="'.$hoge1.'" />'; print '<input type="text" name="hoge2" value="'.$hoge2.'" />'; (formタグは省略しています) とかでいいんじゃないでしょか? スーパーグローバル(_POSTとか_GET)を操作することは基本的にしないほうが良いですよ。
お礼
ご回答ありがとうございます。 何故だか分かりませんが、(PHP内で)条件分岐をした後、その値($_POST['hoge'])を消しても まだどこかのキャッシュかメモリ媒体に残って読み込まれてしまうのです。 スーパーグローバルを操作することは控えた方がよいとのことでした。 理由はよく分かりませんが、ローカルな変数を使った方が分かりやすく安全ということでしょうか? 今度ご指摘の通り、スーパーグローバルをローカル変数に置き換えた上で、その値を消して読み込んでみようと思います。
- shimix
- ベストアンサー率54% (865/1590)
普通、POSTされたデータに不具合があって再入力の場合にはこういうhtmlを出力しますが、データOK→処理のあとは別のhtmlを返しませんか?入力フォームを再度返すと受け取られたのかどうかも不安ですし・・。 #「登録しました」とか「送信しました」とかだけの画面など まぁ、$_POST['hoge1'] = ""; でもunset($_POST)でもクリア出来るとは思います。
お礼
ご回答ありがとうございます。 入力データを送信した後、OK画面を出すことなく、また同じ画面に戻るようになっています。 (ちなみに、その入力データはそこで確認することができます。) ですから、$_POST['hoge']の値は(条件付きで)そのまま引き継がなくてはいけないのです。 $_POST['hoge']="";は試してみましたが、値はそのまま引き継がれてしまいました。 unset($_POST)は知りませんでした。今度試してみたいと思います。
関連するQ&A
- POSTデータのNAME属性をVALUEによって取得する方法
HTML→PHPのPOSTデータのやりとりについて、 【HTML】 <form name="form1" method="post" action="xxx.php"> <input name="01" type="text" value="1"> <input name="02" type="text" value="0"> <input name="03" type="text" value="0"> <input name="04" type="text" value="1"> <input type="submit" name="Submit" value="送信"> </form> 【xxx.php】 フォームから送信されたデータを使って、「value」が"1"の「name」を拾うのにはどのように書けばいいでしょう? ↓このように取得したいです。 $data[0]="01"; $data[1]="04"; よろしくお願いします。
- ベストアンサー
- PHP
- PHPで隠しデータをPOST送信する方法
<form name="example" method="POST" action="example.php"> <input type="text" name="id" value="" /> <input type="password" name="pw" value="" /> <input type="submit" value="ログイン" /> </form> 上記のようなログインフォームがあるとします。 <input type="hidden" />のようにソースを見たらわかってしまう方法ではなく、 クライアント側で完全に見えないよう、id,pwの送信と同時にPHPで隠しデータをPOST送信する方法はございますでしょうか。 よろしくお願いいたします。
- 締切済み
- PHP
- フォームから受け取ったデータを変数に/PHP
入力フォームからデータを送信し、受け取ります。 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> この時に受けったデータが、「りんご」だとして この「りんご」を変数にしたいです。 ↓ <?php $keyword = "りんご"; ?> このようにするには、 <form action="index.php" method="post"> <input type="text" name="hoge"> <input type="submit"> </form> <?php echo htmlspecialchars($_POST['hoge']); ?> の後にどのような処理をすればよいでしょうか? または初めから「$keyword」としてフォームからデータを送ることはできるのでしょうか? 何卒ご指導の程よろしくお願いします。
- ベストアンサー
- PHP
- JavaScriptにおいてPOSTで送信されたデータを取得出来ますか
<form action="自分" method="POST"> <input type="hidden" name="abc" value="1"> <input type="submit" name="OK" value="OK"> </form> 上記のように、POST渡しで送信したとき、Javascriptにて、hiddenのデータを取得することができるのでしょうか? 出来るのであればその方法を教えてくださいませんか。 よろしくお願いします。
- ベストアンサー
- JavaScript
- もっとも初歩的なデータの渡し方を
もっとも初歩的なデータの渡し方を教えていただけませんか。 <FORM ACTION="next.cgi" METHOD="POST"> <INPUT TYPE="TEXT" NAME="内容" SIZE="12"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form> next.cgiでどう書けば「内容」が表示されますか? まったく初心者の質問ですみません。
- ベストアンサー
- Perl
- 1アクションでPOST・GET、両方送信したい
1つのフォームからボタンをクリックして、 POST・GET送信と、両方飛ばすには、どうすればよいでしょうか? URLに「表示させたいパラメータ」と「表示させたくないパラメータ」 があります。 「表示させたいパラメータ」は、GETで、 「表示させたくないパラメータ」は、POST送信したいのですが、 1つのフォームで、同時に飛ばす方法が分かりません。 <form method =post action=hoge.php> <input type=text name="piyo" value="piyo"> <input type=hidden name=puyo_id value=puyo>←これだget送信したい <input type=submit value="送信"> </form>
- ベストアンサー
- PHP
- 同一ページの複数のフォーム通信
お世話になります。 <form method='POST' action='#1'> <input name='text1'> <input name='text2'> <form method='POST' action='#2'> <input name='text3'> <input method='submit' value='B'> </form> <input method='submit' value='A'> </form> Aにて text1,2,3を#1へ送信 Bにて text3を#2へ送信 したいのですが、上手くできません。 <form></form>で囲まれている中に 更に<form></form>する事はできないのでしょうか? 代替案はありますか?? よろしくお願いします。
- 締切済み
- JavaScript
- POSTに対しての認識は下記でよいでしょうか?
POSTに対しての認識は下記でよいでしょうか? http://www.phpbook.jp/appli/form/index3.html ・<form method="POST" action="./kaitou2.php">' action指定のphpファイルに入力した情報が渡される。 ・method="POST POSTという転送方法を採用 ・<form method="POST" name="text1"> <input type="submit" name="btn1" value="回答"> </form> </body> </html> name="text1" どのようその値を取得するか。getelementbyidと同じこれがついている要素の値を取得して下記に渡される。 $input_data = (int)$_POST['text1'];
- ベストアンサー
- PHP
- submitではなくbuttonで送信
事情があり、submitではなくbuttonでフォームのデータを送信したいのですが、以下のように書くとbuttonでは4567が送信されません。 <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="submit" name="bbb" value="4567"> </form> ↓ <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="button" name="bbb" value="4567" onclick="submit();" > </form> submitと同じように、bbbのデータ4567も送信するにはどのように書けばよいのでしょうか? 宜しくお願いします。
- ベストアンサー
- JavaScript
お礼
アドバイス、ありがとうございます。 スクリプトが長くなってきて、変数を整理するのが難しくなってきました。 (どの変数は引き継いでいて、どの変数は新規の値が入っているとか。) また試してみます。
補足
色々と有難うございました。 どうやら私の環境では、POSTの値はスクリプトの最後で削除しても、リロードされた後も残ってしまうようです。