フォームから入力される値のチェックについて
お世話になります。PHP勉強中の初心者です。
タイトルにありますようにフォームから入力される値のチェックについてわからないことがあるので質問いたします。
私は書籍やサイトなどの例を参考にして郵便番号の入力値チェック(ハイフンなし)を
if(!preg_match("/^[0-9]{7}$/",$_POST[zipcode])){
//エラーメッセージ
}
else{
$zipcode = $_POST[zipcode];
}
のように記述しています。
この場合、POSTのデータが改ざんされたとしても数値以外は受け付けないので、これだけで「入力された値は安全」と考えて良いのでしょうか。
また、もしもこれが安全だとするなら、かなり極端な例ですが、
if(!preg_match("/^[一-龠ぁ-んァ-ヴーa-zA-Z0-9a-zA-Z0-9\s\ \¥\(\)\(\)\「\」\!\”\’\% \%\&\&\’\~\-\-\+\+\<\>\.\,\,\、\。\_\_\;\:\:\『\』\【\】\[\]\/\@\?\=\=\÷\× \・\※\■\□\★\☆\▲\△\▼\▽\◎\○\●\〒\←\→\↑\↓\…]{1,50}$/u",$_POST[str])){
//エラーメッセージ
}
else{
$str = $_POST[str];
}
とすれば、POSTデータをそのままHTML表示したりデータベースなどに受け渡しても問題ないのでしょうか(文字コードはサイト全体でUTF-8を使用)。もしこれで安全なら、{1,50}の箇所で文字数の上限・下限も同時にチェックできるので使う場所によってはけっこう便利かなと思うのですが。。。
ひとりで学習しているので、入力チェックやエスケープなどどのようにしたら安全なのかわからず日々手探りの状態が続いています。お時間があれば皆さんがよく使う入力チェックやエスケープのやり方などもご教授いただけると幸いです。
どうぞよろしくお願いいたします。
お礼
問題解決しました。 ありがとうございます。