我得到了这个变量:
$page = (int) $_REQUEST['page'];
我需要一些基于上述请求的行动。这将用于分页脚本。
我的意思是:
如果$page
为0,则脚本会将用户重定向到另一个子页面。
诀窍是我需要重定向用户,以防万一指定了他的URL &page=0
,否则它将不会做任何事情。
我试过这个:
if( $page == 0 ) {
header("Location; xxxx");
}
但即使他未指定(或POST页面),它也会重定向用户。
那么,我该怎么做?
答案 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;