残念なコード
以前見かけたコード。
これと同じレベルのコードが実際に業務で使用されていて、こんなコードを使用しているシステムが日々お金を稼いでいるのが現実。
if( $_POST["ID"] != ""){ if( ctype_alnum($_POST["ID"])){ if($_POST"PW"] != ""){ if( ctype_alnum($_POST["PW"])){ $page = "confirm"; }else{ $err = "PW は英数字のみ"; } $err = "PW の未入力"; } $err = "ID は英数字のみ"; } $err = "ID の未入力"; }
大体こんな感じ。突っ込みどころがたくさんある。
まず、このifの入れ子、どうにかならないものだろうか?
条件を全部逆転させてしまおう。!=は==に、関数の戻りを ctype_alnum は !ctype_alnumに。
if( $_POST["ID"] == ""){ $err = "ID の未入力"; }else{ if( !ctype_alnum($_POST["ID"])){ $err = "ID は英数字のみ"; }else{ if($_POST"PW"] == ""){ $err = "PW の未入力"; }else{ if( !ctype_alnum($_POST["PW"])){ $err = "PW は英数字のみ"; }else{ $page = "confirm"; } } } }
で、elseの中がひとつのif〜elseになっているので、elseifにまとめる。
if( $_POST["ID"] == ""){ $err = "ID の未入力"; }elseif( !ctype_alnum($_POST["ID"])){ $err = "ID は英数字のみ"; }elseif($_POST"PW"] == ""){ $err = "PW の未入力"; }elseif( ctype_alnum($_POST["PW"])){ $err = "PW は英数字のみ"; }else{ $page = "confirm"; }
このぐらいの工夫は欲しいものである。