• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォームが送信されたかの確認方法の違いについて)

フォームの送信確認方法の違いとは?

このQ&Aのポイント
  • フォームの送信確認方法には複数の選択肢がありますが、if( !empty($_POST["submit"] ) { 処理 }、if( isset($_POST["submit"] ) { 処理 }、if( $_POST["submit"] ) { 処理 }の3つが一般的です。
  • A)の方法は、送信されたフォームデータが空でないかをチェックしています。B)の方法は、送信されたフォームデータがセットされているかをチェックしています。C)の方法は、送信されたフォームデータが真であるかをチェックしています。
  • 一般的にはA)やB)の方法がよく使われますが、C)の方法も一部のケースで使われることもあります。また、GETやCOOKIEの変数の存在判定についても同様の方法が適用されます。

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

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

今回の場合はAとCはほぼ同じです、Bは明らかに挙動が違います。 しかしちゃんとやるなら if( $_POST["submit"]!=="" ){ } みたいな処理をしないと、もしsubmitが0だったときの処理が抜けてしまいます。 めんどうなら$_REQUESTをGETやPOSTの代わりに使うこともできます。 競合したときは一般的な設定ではEGPCSの順で優先されます 環境変数>Get>Post>クッキー>Server

r_bel
質問者

お礼

yambejpさん、ご回答ありがとうございました。 A).とC).が同じ動きをするとわかって安心しました。 REQUESTって便利ですね!しかも優先順位まで書いてくださって 大変勉強になりました。色々なアドバイスをどうもありがとうございました!

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

関連するQ&A

  • HTTPでフォームを送信したい

    JavaScriptで書かれた認証文字数チェックがある ユーザIDやパスなどの入力フォームを 本来サブミットで送信する内容を HTTPでPOSTまたはGETして、直接cgiにフォーム内容を 送信したいのですがその様なことは可能でしょうか? 可能でしたら方法やその理屈を教えていただけません でしょうか? 理由 通常ブラウザでアクセスするページを 専用のクライアントを作成し通信したいため submit形式のフォームをPOSTかGETで処理したい。

  • isset関数の動作と入力チェックについて

    issetの動作について疑問に思った事があるので、質問させて下さい。 以下のようなテスト用のphpを作成しました。 issettest.php <?php $a = $_GET["a"]; if(isset($_GET["a"])){ echo "\$GETに[".$_GET["a"]."]が入っています。<br>"; } if(isset($a)){ echo "\$aに[".$a."]が入っています。<br>"; } if(!isset($_GET["a"])){ echo "\$GETは空です。<br>"; } if(!isset($a)){ echo "\$aは空です。<br>"; } ?> ./issettest.php と実行すると、 $GETの値は空です。 $aの値は空です。 ./issettest.php?a=test と実行すると $GETに[test]が入っています。 $aに[test]が入っています。 ./issettest.php?a= と実行すると $GETに[]が入っています。 $aに[]が入っています。 となります。 これがissetの正常な動作なのでしょうか? 例えば、入力フォームを使いGETやPOSTでの値を送信する場合、入力フォームに値が入力されたかどうかを判定するにはissetは使えないのでしょうか? わかりづらい質問で申し訳ありませんが、先輩方の回答お待ちしています。 質問に不備などありましたらご指摘下さい。

    • ベストアンサー
    • PHP
  • PHPのif文「POSTしていない場合」

    PHPの初心者です。 HTMLのフォームでsubmitが押されたかの判定を if (isset($_POST['submit'])){ print"押されました"; }else{  print"押されてません"; } という、形でやってきたのですが、 yes側に押していない場合を設定してelse側に押した場合を記述したいのですが、if文で「submitが押されていなかったら」とはどのように書けばいいでしょうか?

    • ベストアンサー
    • PHP
  • 検索フォームのセッション管理について

    PHPを利用して検索フォームから入力された値を取得し、 条件にあった画面を表示しているのですがページを戻る際に警告が出て うまく戻れません。 流れ 1,フォームから値の取得 ⇒  2,送られた値を【$a】で受け取り、セッション変数に代入、条件にあったデータの表示(select * from sample where aaa like【$a】) ⇒  3,もしフォームの値が空でセッション変数に値があれば、セッション変数を【$a】に代入し条件にあったデータの表示 ⇒  4,フォームの値、セッション変数共に空ならセッション変数を削除し、他のページに飛ばす 5,新たにフォームから値が送られた場合は値を上書きする 以下が書いたコードです。 session_start(); if(isset($_POST["test"])){ $a = $_POST["test"]; $_SESSION["test"] = $a; }elseif($_POST["test"] == "" and isset($_SESSION["test"])){ $a = $_SESSION["test"]; }else{  unset( $_SESSION["test"] );  if (isset($_COOKIE["PHPSESSID"])) {   setcookie("PHPSESSID", '', time() - 1800, '/');  }  session_destroy();  header( "Location: /top.html" );  exit(); } 以下で【$a】を使いsql文を組み立て、データを表示しています。 このコードだと前のページに戻る際firefoxでは 【このページを表示するにはフォームデータを再度送信する必要があります。フォームデータを再送信すると以前実行した検索、投稿や注文などの処理が繰り返されます。】 と表示され、IEでも 【警告 : ページの有効期限切れ 要求したページは、フォームで送信された情報を使用して作成されました。このページは、もう利用できません。セキュリティ保護のため、情報は自動的には再送信されません。 情報を再送信し、この Web ページを表示するには、ツール バーの [更新] ボタンをクリックしてください。】 と表示されてしまいます 上記のコードをどのように変更すれば警告をださず行いたいことに記述したようにできるのでしょうか? ご教授ください。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • フォーム送信後の更新ボタンでも$_POST変数が初期化されない

    フォームのサブミット後にプログラムが走るようになっているtest.phpがあるのですが、フォーム送信後に更新ボタンを押しても再度ポストされるようになってしまっています。 ブラウザの更新ボタンを押したときには、ポストせずにフォームをクリアしたいのですが、どうすればできますでしょうか? <form method="post" action="<?php print($_SERVER['PHP_SELF']); ?>"> <input type=text name=aaa> <input type="submit" name="submit" value="submit"> </form> <?php if($_POST['submit']) { 処理 } ?>

    • ベストアンサー
    • PHP
  • phpのエラーチェックについて質問です!

    phpのエラーチェックについて質問です! エラーチェックについてです><; if(isset($_POST['name'])){ $name = htmlspecialchars($_POST['name']); if (empty($name)) { $message = '未入力があります'; と記入してエラーメッセージを表示したい場所に記載してます。 しかし、フォームで <form action="regist2.php" name="form" method="post"> でsubmit押すとフォームが空白でもactionでregist2.phpに送られてしまいます><; エラーがなければ、そのままsubmitでaction=regist2.phpに送りたいと考えております。 なにか解決方法はないでしょうか? ご教授お願いします!!!!!!!!

    • 締切済み
    • PHP
  • if文について

    $a = $_GET['b']; if ($_COOKIE['hogeFlag'] != hoge) && (!isset($a)) {  処理1 } あるページから画面遷移したときに遷移前に食わせたcookieの値とgetで送られてくる値を元にある処理を行いたいのですが、どうもうまく処理1に入ってくれません。 個々にすればちゃんと処理されるのですが、それだと非効率だと思うので、一行で書きたいのですがどうもうまくいきません。 前提 遷移前ページでcookieに値を食わせてかつ別の値をgetで送ってくるようになっているが、cookieの値が食わせた値と違う場合かつgetで送ってこなかった場合に処理1を実行したい。

    • 締切済み
    • PHP
  • ENTERキー押下でフォームを送信したいのに・・・

    PHPとHTMLでフォームをいくつか作り、画像タイプの送信ボタンを押下すると送信されるようにしています。ところが、IEの場合、ENTERキー押下で送信できる(下記のPHPの制御文がtrueになる)ものと、できないものがあります。ボタンをクリックすればいずれも送信できます。また、FirefoxではどのケースでもEnterキー押下で送信できます。送信ボタンはどのフォームでもひとつです。 何がどういう場合に、IEでEnterで送信できないのでしょうか? ○HTML側 <form...> ... <input type="image" name="submit" ...> </form> ○PHP側 if(isset($_POST['submit_x']) { ... }

    • 締切済み
    • PHP
  • if文の$_COOKIEの処理について

    if文の「$_COOKIE」の処理について質問させてください。 3つのif文の処理は同じだと思いそれぞれ使いって みると多少違いがあるようなのですが、その違い がよく分かりません。PHP4の場合はとはちょっと 様子が違うみたいです。 (1) if($_COOKIE['XXXXXXX']) (2) if(isset($_COOKIE['XXXXXXX'])) (3) if($_COOKIE['XXXXXXX']!="") 環境:PHP5 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 同ページpost送信

    タイトルどおり同じページでpost通信したく一応、参考サイトどおりに試してみたのですが、動きません。フォームは訳あってechoで出力したいです。 同じページに送信できる方法を教えてください。 echo ('<form action="hoge.php" method="post"> <button type="submit" name="remove" class="pre">修正</button> <button type="submit" name="add" class="fro">登録</button> </form>'); if(!empty($_POST['add'])){ echo '登録しました'; }

    • ベストアンサー
    • PHP