管理者から番号を取得し、関連付けられているユーザーを変更する php スクリプトがあります。関数の動作がおかしいことに気付くまでは問題is_numeric
ありませんでした。intval
ここに私が使用したコードがあります:
if( ((empty($_GET["uid"])) || (!isset($_GET["uid"])))){
$id=0;
}else{
if(is_numeric($_GET["uid"])){
$id=intval($_GET["uid"]);
if($id<0){
$id=0;
}
}else{
$id=0;
}
}
しかし、12er3
スクリプトへの入力として送信$id
すると、12
. 明らかに、それは私が望むものではありません。入力をチェックして、数字(および数字のみ)で構成されていることを確認する方法はいくつか見つかりました:1:
$id=(filter_var($_GET['uid'],FILTER_VALIDATE_INT)?(intval($_GET['uid'])<0?0:intval($_GET['uid'])):0);
2:
これ
3:
preg_match("/^\d+$/",$_GET["uid"])
私の質問は、どちらがより良い使用方法ですか?
******
注: $id は負でない整数である必要があります。
誰も私の質問に答えなかったので、私はそれを未回答のままにしました:私は方法ではなく最善の方法を探していました!