0

我正在使用 MySite/Topics/index.php 上的静态页面,该页面通过 PHP 和 MySQL 显示动态页面。我想创建两个并行的动态页面系列(URL 和 URL2),它们显示来自三个可能位置的内容。

1) 默认情况下,每个动态页面(例如 MySite/Topics/Ecology)显示存储在数据库表中的内容(如果数据库表中没有任何内容,则该页面根本不显示任何内容)。

2) 我创建了一系列带有 URL 的“影子页面”,例如 MySite/Topics/Ecology2,它们显示存储在同名文本文件中的内容,其中“2”被剥离(例如 Ecology.php)。这些页面对于我仍在处理的文章或存储笔记很有用。

3)如果静态页面不存在,那么我想默认到一个不同的页面,比如 Workshop.php。URL 将是相同的 - MySite/Topics/Whatever - 但不是显示来自 Whatever.php 的内容(在这种情况下不存在),而是显示来自 Workshop.php 的内容。

那么确定文件是否不存在并链接到不同文件的最佳方法是什么?

有两种可能的解决方案浮现在脑海中,虽然我真的不知道如何实现任何一个......

1)我要显示的静态页面的名称(例如生态)将始终与数据库表中的值匹配,字段 URL。因此,如果我的数据库表的值为“Migration”,它将尝试包含一个名为 Migration.php 的文件。所以也许有某种解决方案可以将数据库值与文件名匹配。

2) 如果我在 require 命令中包含一个文件,但该文件不存在,它会显示错误并终止我的页面。有没有办法用命令替换该错误以链接到不同的文件?

这是我的一个包含脚本的示例,其中 $MySite = 网站名称,$Section = 部分(例如主题)。

require_once($BaseINC."/inc/D/$MySite/$Section/$URL.php");

谢谢。

4

2 回答 2

1

我不认为包含页面是更好的方法。您也可以将页面的数据保存在数据库中,并动态构建页面。

无论如何,您可以在需要或包含文件之前使用 php 函数file_exists()测试文件是否存在:

if(file_exists($filename){
     require_once($filename);
}
于 2013-06-11T23:49:31.727 回答
0
$inc_file = $BaseINC."/inc/D/$MySite/$Section/$URL.php";
if (file_exists($inc_file)) {
    require_once($inc_file);
} else {
   // error message or default page or whatever
   exit();  // kills the rest of the code below
}

我假设您的$BaseINCvar 具有绝对路径的其余部分。

于 2013-06-11T23:42:41.187 回答