質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

914閲覧

isset( $_POST['my_name'] ) と$_SERVER['REQUEST_METHOD'] === 'POST')の使い分けが分からない

kanngaeru

総合スコア14

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/10/24 05:22

PHPでformの入力判別を行うときissetと$_SERVERを使うときがあるかと思いますが、どのように使い分けたらいいのでしょうか。
問題によって、issetで書かれていたり、$_SERVERで書かれていたりするのですが、、、

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

使い分ける必要はありません

$_SERVER['REQUEST_METHOD'] === 'POST'

は、postで送信されたかどうかチェックするものですが、実際$_POST自体が
スーパーグローバルな変数なので上記チェックしなくても$_POSTを参照することは可能です。
逆に上記をチェックしていても

$_POST['my_name']

をユーザーから送られてこない状態で参照すれば、Noticeが出ます。
流れ的にはPOSTで送られてくれば、$_POST['my_name'] も送られてきているだろうという
見立てなのでしょうけど、それは必ずしも必要十分ではないので結局
isset($_POST['my_name'])のチェックを二重にかける手間がかかるわけです

たとえば$_RQUESTを利用すれば、$_SERVER['REQUEST_METHOD']を見ても意味がありますが
これも無駄なのであまりお勧めしません

PHP

1<form method="post"> 2<input type="submit" value="post empty"> 3</form> 4<form method="get"> 5<input type="text" name="hoge" value="1"> 6<input type="submit" value="get"> 7</form> 8<form method="post"> 9<input type="text" name="hoge" value="2"> 10<input type="submit" value="post"> 11</form> 12 13<?PHP 14if($_SERVER['REQUEST_METHOD'] === 'POST') print $_REQUEST["hoge"]; 15?>

※上記特殊な例
まず、empty postを押すとNotice、その後getを押せば1、postを押せば2が表示され
その後empty postを押すと1がかえってくる
これはREQUEST_METHODがpostだがさっき押したgetのパラメータが残っているので
getの値を返すということ

結論

以下でやれば済みます

PHP

1$my_name=filter_input(INPUT_POST,'my_name');
  • $my_nameがnullなら送られてきていない
  • $my_nameが""なら送られてきたけど未入力
  • それ以外はちゃんと送られてきている

投稿2017/10/24 05:39

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanngaeru

2017/10/24 07:56

ありがとうございました!理解しました!
guest

0

yambejp さんの回答とほぼ同じですが、より詳細に記事がかかれているので紹介します。

$_GET, $_POSTなどを受け取る際の処理

投稿2017/10/24 05:53

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanngaeru

2017/10/24 07:56

ありがとうございます。リンク参考になりました!理解できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問