初めてのシステムと日記

システムも日記も初めてです。

研修(PHP入力フォームのエラーチェック)

作成した入力フォームに対し、エラーチェックを行う。

以下、抜粋。


エラーチェック項目と対処法

入力していない:!mb_strlen($test); 文字数が0


○○文字以内で記入:mb_strlen($test) > ○○; 文字数が○○文字以上


半角⇔全角:mb_convert_kana($test, option); 半角全角を変換(optionで指定)


入力文字制限:!preg_match("/^[0-9]+$/", $_POST['f_code']); 0〜9のみ入力可能


チェックボックスにチェックを付けてるかどうか:

チェックボックスの値を配列で受け取る。

count($_POST['hobby']) == 0; 配列の中身が0個だったらエラー


追記


前後のスペース削除:

スペース削除はtrimを用いる。

trimは半角スペースしか削除できない。(全角スペースを消そうとすると文字が消えたり化けたり)

なのでmb_convert_kana($test, "s")で全角スペースを半角スペースに変換し、

trim($test)で全角半角スペースを削除


文字列のhtmlタグ:

入力にbrなどのhtmlタグを入力すると、タグが反映されてしまう。

htmlspecialchars($test); タグがそのまま表示される。


"、'、\などの無効化:

入力に"、'、\などを入力すると、マジッククォート機能で"→\"のように変換されてしまう。

php.iniでマジッククォート機能を全てOffにする。

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off