如果POST为0,则更改位置

时间:2011-10-02 22:39:39

标签: php post location

我得到了这个变量:

$page = (int) $_REQUEST['page'];

我需要一些基于上述请求的行动。这将用于分页脚本。

我的意思是:

如果$page为0,则脚本会将用户重定向到另一个子页面。 诀窍是我需要重定向用户,以防万一指定了他的URL &page=0,否则它将不会做任何事情。

我试过这个:

if( $page == 0 ) {
header("Location; xxxx");
}

但即使他未指定(或POST页面),它也会重定向用户。

那么,我该怎么做?

5 个答案:

答案 0 :(得分:3)

检查它是否实际由用户设置,并且是0

if (isset($_REQUEST['page']) && $_REQUEST['page'] === 0)
{
    header('Location: xx');
}

执行3:===检查值是否实际为数字0

答案 1 :(得分:2)

使用严格比较:

if ($page === "0"){
...
}

更新

好吧,我会更严格。我会使用以下方法

if (isset($_POST["page"])){
   $page = (int) $_POST["page"];
   /* do you assumptions here. this will definitely work */
}

答案 2 :(得分:0)

请参阅array_key_exists

array_key_exists($_REQUEST, 'page'); // returns false if no 'page' parameter supplied.

答案 3 :(得分:0)

您应该将0作为字符串值进行比较,因此您应该从$page读取$_REQUEST作为字符串值...

<?php
 $page = $_REQUEST['page'];
 if( $page == "0" ) {
   header("Location: ./?did-it");
 }
?>

ps - 我认为Location; ...应该是Location: ...

之类的冒号

答案 4 :(得分:0)

将分号更改为冒号。

header("Location; xxxx");

应该是:

header("Location: xxxx");

现在,关于比较运算符的其他信息,因为我不同意@jancha回答

  

===:如果$ a等于$ b,则为TRUE,且它们属于同一类型。

     

==:如果在type juggling之后$ a等于$ b,则为TRUE。

这与JavaScript相同。一个如何有用的例子是当你想要在false / 0和undefined(比如用于错误处理)上运行不同的代码时,在这种情况下我们可以做一个更简单的测试。

$page = (int) $_REQUEST['page']; //this is the line to change

更改为

//this way you don't need to type cast it (which is only supported with php5.3+)
$page = (isset($_REQUEST['page']) && is_numeric($_REQUEST['page'])) ? $_REQUEST['page']:0;