POTI-boardの$delに不正な値が入らないようにする

他の変数にはスパム無効化関数を使う事ができたのですが、配列の$delをHTMLネームエンティティにエンコードすると動作しなくなるので…。
$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="";
}
$delが配列かどうか調べて配列なら配列の数だけ中身を確認し、数字以外の値が入っていたら空文字に置換、配列では無かった時も空文字に置換。入力フォームが改変されていない状態で、かつ数字が入力された時以外は$delが空文字になるようにしました。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

$delが配列なのは、複数の投稿を選択して一括削除するためです。
投稿を2つ削除する時に、$delに入る配列は2つ。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

数字以外をPOSTしてみます。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

削除ボタンを押しても削除されず、$delに空文字が入りました。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

入力欄の、name="del[]"から[]をとって、name="del"にして配列以外の文字列をPOSTしてみます。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

配列かどうかチェックしているので、$delが空文字になりました。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

name="del[a]"に書き換えて連想配列をPOSTしてみます。
$_POST["del"]で値を取得した直後に、var_dump($del["a"]);、var_dump($del);で確認すると…。
$del["a"]には配列が入りますが、$delは配列ではなくなります。
if(is_array($del)){
//中略
}
else{
$del="";
}
より下にvar_dump($del["a"]);、var_dump($del);を移動して確認すると…。
$delは配列ではないので空文字になります。
$del["a"]も空文字になります。

あとは、問題なく操作できる事を編集、削除を繰り返して確認…。

この変更は、POTI-board改 v1.50.3に反映されました。

お絵かき掲示板交流サイトはこちら。

P.S.
$_POST $_GET から filter_input()へ: STP^3

filter_input()とFILTER_VALIDATE_INTのほうが簡単でした…。

この記事へのコメント

コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。