我在PHP 5.4.10下运行的页面中有以下代码段(请注意===)。
$list_all_pages = False;
$reqs_per_page = 50;
$start_page = 0;
if (isset($_GET["p"])) {
echo("Debug: " . $_GET["p"] . "\n");
if ($_GET["p"] === "all") {
$list_all_pages = True;
} else {
$start_page = intval($_GET["p"]);
if ($start_page < 1)
$start_page = 0;
}
}
参数“p”意味着将显示的结果页面的编号(从零开始)或“全部”以显示所有页面。由于我不理解的原因,PHP自动将我的参数转换为整数,结果,我永远无法显示我想要的所有页面。
例如,使用“mypage.php?p=all
”调用页面会导致调试回显打印“Debug:0”
发生了什么事?我认为这种自动转换有点危险......以前有人遇到过这个问题吗?
答案 0 :(得分:3)
$ _GET变量p
(即?p =)在WordPress中保留,作为服务器发布ID的默认方式。虽然大多数人都希望转换其网址,但默认设置为www.domain.com/?p=123。
Wordpress专门查找此参数(它也用作wp_shortlink
),如果它不是数字,则会自动将值设置为0.。
答案 1 :(得分:0)
这就足够了,不需要输入
if ($_GET["p"] == "all") {
$list_all_pages = True;
} else {
$start_page = (int)$_GET["p"];
if ($start_page < 1)
$start_page = 0;
}