如何使用url变量从索引页面中的其他页面加载内容

时间:2015-12-03 04:05:04

标签: php

我正在尝试使用我的索引页面中的url varibale帮助来自page1.php,page2.php和page3.php的内容。

这是我的索引页面代码

<html>
<head>
</head>
<body>
<h1>Hello there></h1>
<ul>
<li><a href="index.php?page=page1.php">page 1</a>page1</li>
<li><a href="index.php?page=page2.php">page 2</a>page2</li>
<li><a href="index.php?page=page3.php">page 3</a>page3</li>
</ul>
<?php
    $page = $_GET['page'];
    $pages = array('page1', 'page2', 'page3');
    if (!empty($page)) {
        if(in_array($page,$pages)) {

            include($page);
        }
        else {
        echo 'Page not found. Return to
        <a href="index.php">index</a>';
        }
    }
    else {
        include('page1.php');
    }
?>
</body>
</html>

索引页面显示未定义的变量$ page

3 个答案:

答案 0 :(得分:1)

您必须使用array('page1.php', 'page2.php', 'page3.php');或避免从网址扩展.php以及数组,并在$page.".php"中使用include。还要确保$_GET['page'];已设置

<html>
<head>
</head>
<body>
<h1>Hello there></h1>
<ul>
<li><a href="index.php?page=page1.php">page 1</a>page1</li>
<li><a href="index.php?page=page2.php">page 2</a>page2</li>
<li><a href="index.php?page=page3.php">page 3</a>page3</li>
</ul>
<?php
    $page = isset($_GET['page'])?$_GET['page']:'page1.php';
    $pages = array('page1.php', 'page2.php', 'page3.php');
    if (!empty($page)) {
        if(in_array($page,$pages)) {

            include($page);
        }
        else {
        echo 'Page not found. Return to
        <a href="index.php">index</a>';
        }
    }
    else {
        include('page1.php');
    }
?>
</body>
</html>

答案 1 :(得分:0)

我建议使用框架中的路由系统。

除了$ _GET变量:index.php?page = page1.php之外,还返回$ pages数组中不存在的字符串“page1.php”。将.php添加到$ pages数组中,你应该让它工作。

路由系统的建议: http://silex.sensiolabs.org/

使用symfonys路由和请求组件。会省你一些头疼的事。

答案 2 :(得分:0)

<html>
<head>
</head>
<body>
<h1>Hello there></h1>
<ul>
  

将page1.php更改为page1 因为数组中没有page1.php它只有page1 .....

<li><a href="index.php?page=page1">page 1</a>page1</li>
<li><a href="index.php?page=page2">page 2</a>page2</li>
<li><a href="index.php?page=page3">page 3</a>page3</li>
</ul>
<?php
  

你有未定义索引,因为第一次页面加载$ _GET ['page']没有退出。你需要检查是否设置了$ _GET ['page']

if(isset($_GET['page']))
{
    $page = $_GET['page'];
    $pages = array('page1', 'page2', 'page3');
    if (!empty($page)) {
        if(in_array($page,$pages)) {
  

这里$ page只包含page1,page2 ... else所以你需要与“.php”结合

            include($page.".php");
        }
        else {
        echo 'Page not found. Return to
        <a href="index.php">index</a>';
        }
    }
    else {
        include('page1.php');
    }
}
?>
</body>
</html>