尽管定义了变量,但是要清空$ _GET数组

时间:2013-02-23 01:30:50

标签: php

我正在学习php,请跟我一起。我只是把我的localhost服务器上的一个网站的起点 - Apache,MYSQL,MYPHPADMIN放在一起。在我尝试使用$ _GET动态链接导航之前,一切似乎都正常工作。这是index.php中的代码:

<?php include('Config/setup.php') ?>
<?php

if ($_GET['page'] == ''){
$pg = 'home';
} else {
$pg =$_GET['page']; 
}

?>

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>FTS</title>

<link rel="stylesheet" type="text/css" href="css/Styles.css"/>

</head>

<body>
 <div class ="header temp_Block">
      <?php include('templates/header.php');?>
</div>

<div class ="main_nav temp_Block">
    <?php include('templates/main_nav.php');?>
</div>
<div id ="Content">
    <div class ="main_content temp_Block ">
        <?php
        include ('content/'.$pg.'php');

        ?>


    </div>
</div>     
    <div class = "footer temp_Block">
    <?php include('templates/footer.php');?>
    </div>

</body>

</html>

当我查看我的链接,看看我是否能够链接到我的各个页面 - 家庭,服务,关于我们等。它给了我这个错误:

Notice: Undefined index: page in C:\xampp\htdocs\test\index.php on line 6

Warning: include(content//content/homephp): failed to open stream:
No such file or directory in C:\xampp\htdocs\test\index.php on line 35

Warning: include(): Failed opening 'content//content/homephp' for inclusion
(include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\test\index.php on line 35

所以我跑了这个看看$ _GET发生了什么:

var_dump($_GET);
exit;

数组为空。它什么都没显示。我之前使用过这种方法,但区别在于我在托管网站上。我查看是否有权限问题,但我检查了apache.conf,似乎没有任何错误。

任何帮助都会受到赞赏,因为我真的想要了解这些东西。提前谢谢。

3 个答案:

答案 0 :(得分:1)

检查变量是否先设置,然后检查它是否具有相关值:

if (isset($_GET['page']) && $_GET['page'] !== ''){
    $page = $_GET['page'];
} else {
    $page = 'home';
}

但要小心directory-traversal attacks;因为它是你的代码将让攻击者查看任意文件。

答案 1 :(得分:1)

你忘记了“。”在文件名中(在扩展名之前)。在代码部分之后:

if ($_GET['page'] == ''){
  $pg = 'home';
} else {
  $pg =$_GET['page']; 
}

添加以下内容:

$pg = $pg . ".";

或者,更改以下行:

include ('content/'.$pg.'php');

为:

include ('content/'.$pg.'.php');

答案 2 :(得分:0)

我认为你来自TheDigiCraft。猜猜我也被困在那里并在10分钟前问过这个问题。在这里(https://stackoverflow.com/questions/17501271/i-have-error-in-coding-plz-fix-it-for-me)。只需用这个替换if else代码就行了:)

<?php

     echo"the page is now " ;

     if(isset($_GET['page']) == '')

         {
            echo "home";
         }
     else
         {
            echo $_GET['page'];
         }

?&gt;

顺便说一句我的代码就是这样,它没有错误。我也在学习这门课程:D。

<?php
// setup code here
include('config/setup.php');


?>


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title> Dynamic Website Project </title>
<link rel="stylesheet" type="text/css" href="css/styles.css">

</head>
<body>

<div class="header temp_block">
    <?php include('template/header.php'); ?>
</div>

<div class="nav_menu temp_block">

<?php include('template/main_nav.php'); ?>

</div>

<div class="content temp_block">
    <?php

     echo"the page is now " ;

     if(isset($_GET['page']) == '')

         {
            echo "home";
         }
     else
         {
            echo $_GET['page'];
         }
    ?>
</div>

<div class="footer temp_block">

<?php include('template/footer.php'); ?>

</div>

</body>
</html>