$_POST $_GET から filter_input()へ
POTI-boardの$delに不正な値が入らないようにする: STP^3
でこう書きました。
foreachを使ったほうが的確だったかも。そして…。

取得する値がないときは変数にNULLがセットされるので未定義になりません。
注意:2019年8月29日現在の最新版は POTI-board改 v1.53.1 lot.190827です。
POTI-board改の最新版のダウンロードはこちらから。
お絵かき掲示板はこちら。
でこう書きました。
$del = ( isset($_POST["del"]) === true ) ? ($_POST["del"]): "";数字しか入らなくする工夫だったのですが…。
if(is_array($del)){
$countdel=count($del);
for($i = 0; $i < $countdel; $i++){
if(!ctype_digit($del[$i])){//数字のみ
$del="";
}
}
}
else{
$del="";
}
foreachを使ったほうが的確だったかも。そして…。
$_GET, $_POST じゃなくて filter_input 使えとのこと - Qiita
$del = filter_input(INPUT_POST,'del',FILTER_VALIDATE_INT,FILTER_REQUIRE_ARRAY);//$del は配列配列にもfilter_input() を使う事ができるので FILTER_VALIDATE_INT で整数以外入らなくなりました。とてもスマートです。

$anime = filter_input(INPUT_POST, 'anime',FILTER_VALIDATE_BOOLEAN);bool型以外受け付けないので、入る値はtrueまたはfalseのみ。
取得する値がないときは変数にNULLがセットされるので未定義になりません。
【PHP入門講座】 NULLと未定義の違い - Qiita$_POST[]は書き換える事ができるので意図しない値が入る可能性…。スクリプトの先頭で取得するだけなら問題ないのかもしれませんが途中で他の値を代入しているスクリプトも存在していて…httpからPOSTされたデータなのか、代入して書き換えられた値なのかわからなくなるケースもあるようです。
PHP - スーパーグローバル変数に直接アクセスしない方がいい理由|teratailこの変更はPOTI-board改 v1.51.9 lot.190612に反映されました。
filter_input()を使った場合、スーパーグローバルの$_GETや$_POSTではなく、本当にHTTPで投げられた値を元に結果を返します。
注意:2019年8月29日現在の最新版は POTI-board改 v1.53.1 lot.190827です。
POTI-board改の最新版のダウンロードはこちらから。
お絵かき掲示板はこちら。
posted by さとぴあ at 2019/08/29 14:36
| お絵かき掲示板の改造
この記事へのコメント