index.php与参数VS单独的文件?把它们放在哪里?

时间:2014-01-27 09:39:30

标签: php

我正在学习,我对这个非常微不足道的步骤有两种不同的看法和方法。我在Home,About,Contacts等项目中有不同的页面。

我做了以下操作:index.php文件和参数,如?page = about,?page = contacts等。我为每个参数都有一个带有$ _GET ['page']的switch语句。对于每种情况,我都为页面内容包含不同的文件。

示例:

switch ($current_page) {
  case ('about'):
    include VIEWS_PATH . PAGES_CONTENTS . 'about.php';
    break;
  case ('contacts'):
    include VIEWS_PATH . PAGES_CONTENTS . 'contacts.php';
    break;
  default:
    include VIEWS_PATH . PAGES_CONTENTS . 'homepage.php';
}

通过这种导航:

<a href="<?php echo BASE_URL ?>">Home</a>
<a href="index.php?page=about">About</a>
<a href="index.php?page=contacts">Contacts</a>

我在这里读到这种方式不推荐,因为它是可以破解的,如果页面很多,则switch语句会非常大。

我被告知这种做法:对于项目中的每个页面,都存在一个真实的物理文件,如index.php,about.php,contacts.php等,每个页面都包含其内容。

导航就像:

<a href="index.php">Home</a>
<a href="about.php">About</a>
<a href="contacts.php">Contacts</a>

哪种方式更好?如果项目有100页,我是否需要放置100个文件?这意味着我的根目录将包含很多文件。有没有办法将这些文件存储在某个文件夹而不是项目的根目录中?

非常感谢您的关注和答案!

我在CodeIgniter上看了很多,看看它是如何管理的,但它对我来说似乎很复杂和易懂。我认为它与.htaccess文件和一些路由有关。是这样吗?

3 个答案:

答案 0 :(得分:1)

假设您有90多个文件,您可以使用以下动态内容:

index.php
content.php

index.php will run normally
content.php will execute all other pages by fetching data from db

你的菜单就像

<a href="index.php">Home</a>
<a href="content.php?page=about">About</a>
<a href="content.php?page=contact">Contacts</a>

您也可以通过.htaccess

按照您的选择显示网址
content.php?page=content can be shown as /page.php r /page.html and so on...

我希望你有个主意。

答案 1 :(得分:1)

带参数的主文件更好,因为您作为程序员可以控制在哪个地址加载哪些内容。这就是所有框架所做的事情 - 它们使用mod_rewrite Apache模块和.htaccess文件获取整个路径和查询参数,并根据项目代码中存储的配置对其进行解释。当您在项目的各个部分之间移动时,这尤其有用,因为您可以动态地说/contact不是加载联系页面而是(例如)内部客户端支持系统。

答案 2 :(得分:1)

第二种解决方案并不常见,因为您必须将整个引导包含在每个内容脚本中。如果您必须更改某些内容,则必须在每个文件中进行更改。

你的第一个例子是首选的,但正如你所说的那样,对于许多页面而言,这是非常静态和不舒服的。因此,您希望将其存储在文件或数据库中的数组中。

在您存储的数据库中

current page              script    
home                      home.php
about                     about.php

您获取当前页面($_GET['page']),并作为回报,包含要包含的脚本。

而不是:

<a href="<?php echo BASE_URL ?>">Home</a>

你应该实施

<a href="index.php?page=home">Home</a>

如果您需要mod_rewrite支持或nginx重写,您可以强制将/index.php?page=X重定向到/X,然后必须调整数据库中存储的当前页面值。