はじめに
bdrccです。
ポートフォリオに掲載する、PHPの制作物を作っています。
今回の記事は、フォームに入力された内容で四苦八苦した経緯を書いていきます。
整数がほしい
パスワードの桁数と個数をフォームに入力し、PHPで実行することで、英数字から作成されたパスワードを、複数個自動生成するWebアプリを作成しています。
数字入力の枠のエラー対応を行いました。
入力されていない 場合
-> HTML の inputタグに required
を追加して対応
数値ではない または 負の数 の場合
-> PHP の is_numeric(入力内容)
で判定可能
ここまでは順調でした。
問題はここからです。
桁数を6〜10、個数を1〜10としていたのですが、範囲内小数の場合、小数部分を切り上げて自動判断していました・・・。
対応
1.is_int()
を使用
->文字列扱いで認識され、正しい自然数でも作動せず
2.is_numeric() and $x==intval($x)
を使用
->無事、範囲内整数のみで指定ができました。
3.mb_convert_kana()
を使用
->if文の前で変換しておくと、全角数字の場合も判定が可能 他の文字が入っても影響を受けず
<?php
$num = mb_convert_kana($_POST['num'],"n");
if(is_numeric($num) and
$num == intval($num) and
1 <= $num and
$num <= 10){
// 1から10までの整数だけ通す場合
...
}
?>
終わりに
Qiitaでの投稿の方法、大体わかってきました。
何事もまずはやってみないと、ですね。
引き続き頑張ります。