我如何告诉这个PHP代码,当URL中没有?page=randompage时,它会自动将活动进行索引.php?
<?php
$query = "SELECT pagename, pagetitle FROM pages LIMIT 8";
$result = $mysqli->query($query);
echo "<ul>";
while ($row = $result->fetch_array(MYSQLI_ASSOC)){
echo "<li><a href='"?page=".$row["pagename"]."'"";
if ($_GET['page'] == $row['pagename']) {
echo " class='"active'""; } echo "> ".$row["pagetitle"]." </a></li>";
}
echo "</ul>";
?>
这是因为每当我的网址看起来像这样时http://localhost/greencph/
它都会显示一个php错误,因为它不知道它在哪个站点上,只要网址看起来像这样,它就可以完美地工作: http://localhost/greencph/?page=index.php
有关如何解决此问题的详细说明将不胜感激!
请记住,我是个白痴,向我解释一下,以便我理解。
错误来了,因为每次$_GET
的值都没有设置。
所以,为了处理它,
获取变量中 $_GET['page']
的值。
因此,如果我们没有得到 $_GET
,我们将为其分配一个默认值,即索引页。
$page = ! empty($_GET['page']) ? $_GET['page'] : 'index'; // set default value.
并更改此行:
if ($page == $row['pagename']) {
因此,最终修改的代码应该是:
<?php
$query = "SELECT pagename, pagetitle FROM pages LIMIT 8";
$result = $mysqli->query($query);
$page = ! empty($_GET['page']) ? $_GET['page'] : 'index';
echo '<ul>';
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$class = '';
if ($page == $row['pagename']) {
$class = 'active';
}
echo '<li><a href="?page='.$row["pagename"].'" class="'.$class.'">' . $row["pagetitle"].' </a></li>';
}
echo "</ul>";
?>
使用 $_GET
数组:
<?php
if(isset($_GET['page'])) {
// Your code
...
}
?>
问题出在这一行
if ($_GET['page'] == $row['pagename']) {
您甚至没有检查索引"页面"是否存在。因此,当您尝试加载没有任何 GET 参数的页面时$_GET['page']
甚至不会设置,并且会收到访问 unset 元素的错误。
要解决此问题,只需检查
if(isset($_GET['page']) {
...your code...
}