[過去ログ] 【PHP】下らねぇ質問はここに書き込みやがれ 12 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
399
(4): (スフッ Sd4a-Sdyw) 2021/07/05(月)01:27 ID:fHx0Uh9Wd(1/2) AAS
めちゃくちゃ素人質問で申し訳ないんですけど入力された値が数値では無い場合と指定文字数じゃない場合にエラーを出したいんですけどどこが間違ってますでしょうか?
if(!is_numeric($_POST['te']) ||
!mb_strlen($_POST['te'])==8){
$err ='正しい数値を入力して下さい';
}
400
(1): (ワッチョイ 271d-XVAm) 2021/07/05(月)02:01 ID:vro+Akhn0(1) AAS
>>399
$errはどこかでechoするんですよね?
401
(1): (ワッチョイ 0a02-lJqZ) 2021/07/05(月)02:16 ID:gY5D6WDn0(1) AAS
>>399
is_numericとmb_strlenを一緒に使っているが、$_POSTに入力されるのは全角、半角どちらを期待しているのか?
半角ならばstrlen使うべきだし、全角ならis_numericではなくpreg_matchなどで処理する必要がある

解決方法としては、一旦$_POSTを変数に入れて全角か半角どちらか必要な方に統一した後、然るべき処理を行うのがよいと思われる
403: (ワッチョイ 9ebb-DUKI) 2021/07/05(月)11:09 ID:W/ubV+NK0(1) AAS
>>399
要件を整理すると「特定の範囲内の数値を正とする」ってことだと思うので、filter_input()使うのが楽だと思う
406: (ワッチョイ 2f08-c9XW) 2021/07/05(月)12:19 ID:kyq5FLmC0(2/3) AAS
>>399
>>402
色々間違ってる

・$_POST['te'] が null(未定義) だった場合にそのコードはエラーになる(もしエラーにならないならエラー設定を見直すこと)
・半角数字の入力を期待しているのだから、使うのは mb_strlen() ではなく strlen()
・書くなら !mb_strlen($_POST['te']) == 8 ではなくて mb_strlen($_POST['te']) !== 8
・== ではなく === で問題なく動くコードを書くくせを付けた方がいい
・省略しただけかもしれないが、$err をきちんと初期化しよう

以上を修正したサンプル
外部リンク:paiza.io
省2
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.038s