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

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

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

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

Q&A

2回答

1312閲覧

filter_input_arrayでnullや""チェック

matsuo_basho

総合スコア88

PHP

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

0グッド

0クリップ

投稿2020/09/05 04:51

いつもお世話になっております。

filter_input_array の使い方でわからないことがあります。

これまでは post でデータを送る際に、以下のように1つひとつチェックをしてデータを変数に格納しておりました。

php

1if( !empty( $_POST['name'] ) ){ 2 3 $name = $_POST['name']; 4 5 header( 'Location: http://localhost:8888' ); 6 exit; 7 8}

ただ、少ない数ではこれでも問題はないのですが、
チェックする項目が増えた時にこれでは煩雑になり現実的ではないと思い他の方法を調べていたところ
filter_input_array()に出会いました。

しかし、filter_input_array()の使い方は公式マニュアルがあるものの、
いまいち自分が知りたい情報が記載されておらず、今回こちらでお尋ねすることとしました。

自分が知りたいこととしては、
上記の if( !empty( $_POST['name'] ) )~ のようにPOSTデータが入っていなかった場合に元のページにリダイレクトをさせたいのですが、
filter_input_array()を使う場合はどのようにこれを表現すれば良いかがわかりません。

以下のように、オプションを設定することもできるようですが、
型チェックのみでnull""だった場合にfalseを返してくれるなどがないようでした。
(デフォルトでnull""のチェックをしてくれると思ったのですが、
オプションを設定せずにフォームデータを飛ばしたところ、何もエラーがでずに""が出ておりました。)

php

1$filter = array( 2 'name' => FILTER_VALIDATE_INT, 3 'email' => FILTER_VALIDATE_EMAIL, 4); 5 6$post_data = filter_input_array( INPUT_POST, $filter );

php にあまり明るくないので質問が的確でないかもしれませんが、
もしご不明な点があれば修正依頼などしていただければと思います。

以上となります。
それではどうぞ宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

型チェックのみでnullや""だった場合にfalseを返してくれるなどがない

そうですね。
POSTデータに含まれていないときを判定するには、

php

1if (isset($_POST['name'])) { 2 // ~ 3}

などとisset()を使うのが適切です。
empty()での判定は
PHP isset, empty, is_null の違い早見表 - Qiita
の例を見てもらうとわかりますが、''や'0'や0やNULLをtrueと判断してしまうのでよくありません。

投稿2020/09/05 05:04

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

post/getのチェックは一般にfilter_inputで十分です
パラメータが送られてこなければnull、バリデーションに引っかかればfalse
それ以外は普通の値が得られます

投稿2020/09/06 05:30

yambejp

総合スコア114839

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問