isset $_GET 没有显示正确的信息

isset $_GET not showing right info

我下面的代码不起作用

<?php 
//Laat homepage zien als het leeg is
if(!isset($_GET['page']))
{
include 'includes/view/homepage.php';
echo $index;
}
elseif(empty($_GET["page"]))
{
include 'includes/view/homepage.php';
echo $index;
}
//Laat uitleg zien van hypixel api
elseif(isset($_GET['page']) === "hypixel")
{
include 'includes/view/hypixelapi.php';
echo $index;
}
//Laat errors zien die je kan krijgen
elseif(isset($_GET['page']) === "errors")
{
include 'includes/view/errors.php';
echo $index;
}
//Laat player api uitleg zien
elseif(isset($_GET['page']) === "player")
{
include 'includes/view/playerapi.php';
echo $index;
}
//Laat server api uitleg zien
elseif(isset($_GET['page']) === "server")
{
include 'includes/view/serverapi.php';
echo $index;
}
//Laat error 404 zien als het fout is
else
{
include 'includes/errors/404.php';
echo $index;
}
?>

当我去

localhost/directory/ or localhost/directory/?page=

显示首页 但是当我去

localhost/directory/?page=errors or localhost/directory/?page=hypixel

显示404页面

您正在比较 isset($_GET['page'])"value"isset returns true/false,所以你想将 $_GET['page'] 变量与 "value" 进行比较,而不是如果它已设置。

因此您的 elseif 语句应如下所示:

elseif($_GET['page'] === "hypixel")
{
include 'includes/view/hypixelapi.php';
echo $index;
}

您将使用 isset() 函数来分配变量,但事实并非如此:

isset($_GET['page']) === "player"

如果设置了 $_GET['page'],这将 return true

从字面意思看isset()表示设置了变量。是一个BOOL函数,意思是设置时只能returntrue,不设置/为空时只能false

因此,您的代码应该是:

$_GET['page'] == "player"

==用于比较,而===是是否相同,更多信息在The 3 different equals.

有关 isset() 的更多信息:http://php.net/manual/en/function.isset.php