我正在学习,我对这个非常微不足道的步骤有两种不同的看法和方法。我在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文件和一些路由有关。是这样吗?
答案 0 :(得分:1)
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
,然后必须调整数据库中存储的当前页面值。