前提・実現したいこと
お問い合わせフォームを作っています。
nullバイト対策で意図した動作が出来ずに困っています。
フォームからはPOSTでデータを送信しているのですがテストに「名無し\0」と入力して送信してもpreg_matchでで"\0"にマッチしません。
「\0」が入っているにも関わらず常に「正しい値です」が表示されてしまうのです。
「str_replace」でサニタイジングしている例がよく書かれていますができれば入力自体が不正としてエラー表示を出したいのです。
いろいろ試したり調べたりしてみましたが原因がわかりませんでした。
お詳しい方々のアドバイスなど頂けると幸いです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
preg_matchで"\0"にマッチしない
該当のソースコード
var_dump($_POST); foreach($_POST as $key => $val){ $pattern_null = '/\0/'; if(preg_match($pattern_null, $val)){ die('不正な入力です。'); }else{ die('正しい値です'); } } var_dumpしたときの$_POSTの値 array(5) { ["name1"]=> string(11) "名無し\0" ["name2"]=> string(9) "権兵衛" ["kana1"]=> string(9) "ナナシ" ["kana2"]=> string(12) "ゴンベエ" ["sendform"]=> string(15) "確認画面へ" }
試したこと
直接コード内に"名無し\0"と書いた場合にはマッチしました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/01 14:58
2018/11/02 02:42
2018/11/02 03:37
2018/11/02 03:56
2018/11/03 06:47
2018/11/03 07:34
2018/11/05 14:04
2018/11/05 15:19
2018/11/05 15:30
2018/11/06 11:33
2018/11/07 14:29