0

您好,我的代码似乎失败了:

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

输出:不是数字

怎么来的?

请帮忙。

4

5 回答 5

2

应该使用 if(is_numeric($_GET['id'])) {


if (is_numeric($_GET['id'])) { 
    echo "yes numeric";
} else {
    echo "not numeric";
}
于 2012-11-19T12:26:03.493 回答
1

第一的:

if (!empty($_POST['id'])) { 
    echo "empty";
} else ...

您是说:如果变量不为空,则回显“空”,然后您正在检查空变量是否为数字(else 中的代码正在检查空变量,这就是为什么它说它不是数字的原因)

取出感叹号,并澄清自己使用 post 或 get 方法,因为当您通过 GET 传递 POST 变量时尝试获取它

于 2012-11-19T13:53:50.810 回答
1

看到这个问题:$_POST 数字和字符检查器

// 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"



**/
于 2016-11-02T05:28:36.610 回答
0

我认为您正在通过 URL 传递参数,因此请使用

if (is_numeric($_GET['id']))

或使用

if (is_numeric($_REQUEST['id'])) { 

否则它将显示一个未定义的变量,因此将回退到每个块

于 2012-11-19T12:28:45.780 回答
0

很简单,“id”在 $_GET 数组中,但您检查 $_POST 数组中的存在

if (empty($_GET['id'])) { ... }

应该是正确的。然后你可以使用 $_GET['id'] 或 $_REQUEST['id']。

注意:$_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?";
     }
 }

除了 $_GET 你也可以使用 $_REQUEST

于 2012-11-19T12:38:29.800 回答