【问题标题】:how to load different page in a index page of website如何在网站的索引页面中加载不同的页面
【发布时间】:2015-10-24 18:37:03
【问题描述】:

我正在尝试建立一个具有不同页面的网站。 我是 PHP 新手,我有一个索引页,其中包含用于保存页眉、导航菜单、主体、侧边栏和页脚的某些表格。索引页使用include("filename.extension"); 附加到其中的所有上述元素。问题是我试图在菜单更改时动态加载网站的主体,即内容。

以下是我的代码,对此的任何建议都非常值得赞赏。提前致谢。

<body>
<div> <?php Include('header.php'); </div>

<div id="menu" align="center">
    <table width="790" height="35">
        <tr>
            <td>Home</td>
            <td><a href="pages/students/reg.php">Register</a></td> // this page need to display on the same window with other elements, after click.
        </tr>
    </tabel>
</div>

<div id="sidebar" align="right"> <?php include ("sidebar.php");?> </div>

<div id="Content ">
    <?php include("FILE"); // here i need to display the hyper linked page.?>
</div>

<div id="footer"> <?php include("footer.php");?> </div>
</body> `

【问题讨论】:

标签: php html web


【解决方案1】:

首先,创建一个名称与以下完全相同的文件:(包括点)

.htaccess

并将其放在索引的同一文件夹中。

在.htaccess里面,写如下代码:

# .htaccess mod_rewrite

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]

本案例中的 .htaccess 将重写 URL 以将 http://127.0.0.1/index.php?page=register 更改为接受“博客漂亮 url”http://127.0.0.1/register

在您的 index.php 文件夹中,创建一个新文件夹 "pages"

在文件夹 pages 内,创建 4 个简单的 PHP 文件(home.php、register.php、anyother.php 和 notfound.php),内容如

<?php
   echo "I'm the Register Page.";
?>

这将是一个基于您的代码的索引示例。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"><title>¨title</title></head>
<body>
    <div>
        <?php include 'header.php'; ?>
    </div>
    <div id="menu" align="center">
        <table width="790" height="35">
            <tr>
                <td><a href="/home">Home</a></td>
                <td><a href="/register">Register</a></td>
                <td><a href="/anyother">AnyOther</a></td>
                <td><a href="/misstypo" title="This will lead to the notfound.php">Broken Sample</a></td>
            </tr>
        </table>
    </div>
    <div id="sidebar" align="right">
        <?php include 'sidebar.php'; ?>
    </div>
    <div id="Content ">
        <?php
            if(!isset($_GET['page']) || $_GET['page'] == ''){
                $page = 'home'; //If no page specified
            } else {
                $page = $_GET['page'];
            }

            switch($page)
            {
                case 'home':
                    include '/pages/home.php';//file path of your home page
                    break;
                case 'register':
                    include '/pages/register.php';
                    break;
                case 'anyother':
                    include '/pages/anyother.php';
                    break;
                default:
                    include '/pages/notfound.php'; //If any page that doesn't exists, then get back to home.

            }
        ?>
    </div>
    <div id="footer">
        <?php include("footer.php");?>
    </div>
</body>
</html>

【讨论】:

  • 我需要博客网站的概念。我需要在同一个窗口中显示我网站的其他页面,其中包含我已经包含在索引页面中的侧边栏和页脚
  • 更好地解释您需要什么或输入一些代码或问题。我怀疑你真正需要什么。也许你需要一个 ModRewrite 来拥有“website.com/articlename/”并保持布局
  • 我尝试了您上面提到的相同代码。但是我仍然在 switch 语句行上遇到错误
  • 它工作得很好。但是我在访问主页时遇到错误行(开关语句行错误)。除此之外,它的工作正常
  • 您好 Diogo Paim,您能否按照已回答的方式关闭此问题?我没有权限关闭它。
【解决方案2】:

猜猜迪奥戈的回答会让你得到你想要的。像这样创建你的 index.php 文件。

//menu area 
<div id="menuWrap">
  <a href="?page=page1">link to page1</a>
  <a href="?page=page2">link to page2</a>
</div>

//side bar
<div id="sidebarWrap">...</div>

//content area
<div id="contentWrap">
<?php
switch($_GET['page']) 
{
    case 'page1':
        include '/pages/page1.php';
        break;
    case 'page2':
        include '/pages/page2.php';
        break;
    default:
        include '/pages/notfound.php';

}
?>
</div>

//footer
<div id="footerWrap">...</div>

这样你可以在同一个窗口中显示你网站的其他页面,只有内容区域会改变

更新:

我已经更正了你的错别字,这里是根据你的代码段的答案。

<body>
<div>
    <?php Include('header.php'); ?>
</div>
<div id="menu" align="center">
    <table width="790" height="35">
        <tr>
            <td><a href="?page=page1">Home</a></td>
            <td><a href="?page=page2">Register</a></td>
        </tr>
    </table>
</div>
<div id="sidebar" align="right">
    <?php include ("sidebar.php"); ?>
</div>
<div id="Content ">
    <?php
        switch($_GET['page']) 
    {
        case 'page1':
            include '/pages/home.php';//file path of your home page
            break;
        case 'page2':
            include '/pages/students/reg.php';
            break;
        default:
            include '/pages/notfound.php';

    }
    ?>
</div>
<div id="footer">
    <?php include("footer.php");?>
</div>
</body>

【讨论】:

  • 我正在检查您的代码,您需要更正一些错字。在'包括('header.php');'缺少部分关闭 php 标记 (?>)。在表格中,结束表格标记的类型为 。首先纠正这些错误并再次检查
  • 它在 switch 语句行显示一个错误。我得到的错误是 -> Undefined index:page in C:/xampp/htdocs/it/index.php
  • 请给出一些解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 2012-01-28
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多