您好我的代码似乎失败了:
if (!empty($_POST['id'])) {
echo "empty";
} else {
if (is_numeric($_POST['id'])) {
echo "numeric!";
} else {
echo "not empty but not numeric how come?";
}
}
我的浏览器网址:hxxp:// localhost / upload /?id = 9
输出:不是数字
怎么回事?
请帮忙。
答案 0 :(得分:2)
应该使用if(is_numeric($_GET['id'])) {
if (is_numeric($_GET['id'])) {
echo "yes numeric";
} else {
echo "not numeric";
}
答案 1 :(得分:1)
第一
if (!empty($_POST['id'])) {
echo "empty";
} else ...
你是说:如果变量不是空的,那么回显“空”,然后你正在检查空变量是否是数字(else中的代码正在检查一个空变量,这就是为什么它说的是不是数字)
取出感叹号,并使用post或get方法澄清自己,因为当你通过GET传递它时试图获取POST变量
答案 2 :(得分:1)
请参阅此问题:$_POST Number and Character checker
// test.php
// testing with $_POST['id'] from forum with id = 5 and another test where id = new
$id = $_POST['editid'] ;
echo "<br>---".$id."---<br>";
if (empty($id)) {
echo "<br>1: empty";
} else {
if (!is_numeric($id)) {
echo "<br>2: This is the number 5";
} else {
echo "<br>3: the must be the word new";
}
}
// test 2 ... ctype_digit
if (empty($id)) {
echo "<br>4: empty";
} else {
if (!ctype_digit($id)) {
echo "<br>5: This is the number 5";
} else {
echo "<br>6: the must be the word new";
}
}
// test 3 ...
if (empty($id)) {
echo "<br>7: empty";
} else {
if (!preg_match('#[^0-9]#',$id)) {
echo "<br>8: This is the number 5";
} else {
echo "<br>9: the must be the word new";
}
}
/**
result from 5
---5---
3: the must be the word new
6: the must be the word new
8: This is the number 5
results from "new"
**/
答案 3 :(得分:0)
我认为你是通过URL传递参数所以使用
if (is_numeric($_GET['id']))
或使用
if (is_numeric($_REQUEST['id'])) {
否则它将显示一个未定义的变量,因此将回退到每个块
答案 4 :(得分:0)
它很容易,#34; id&#34;在$ _GET数组中,但您检查$ _POST数组中的存在
if (empty($_GET['id'])) { ... }
应该是正确的。然后你可以使用$ _GET [&#39; id&#39;]或$ _REQUEST [&#39; id&#39;]。
注意:$ _REQUEST保存$ _POST和$ _GET中的所有变量
正确的代码应该是:
if (empty($_GET['id'])) {
echo "empty";
} else {
if (is_numeric($_GET['id'])) {
echo "numeric!";
} else {
echo "not empty but not numeric how come?";
}
}
您也可以使用$ _REQUEST
代替$ _GET