我在MySite / Topics / index.php上使用静态页面,通过PHP和MySQL显示动态页面。我想创建两个并行的动态页面系列(URL和URL2),显示来自三个可能位置的内容。
1)默认情况下,每个动态页面(例如MySite / Topics / Ecology)显示存储在数据库表中的内容(如果数据库表中没有任何内容,则该页面根本不显示任何内容)。 / p>
2)我创建了一系列的影子页面"使用URL,例如MySite / Topics / Ecology2,用" 2"显示存储在同名文本文件中的内容。剥离(例如Ecology.php)。这些页面对于我正在处理或存储笔记的文章非常有用。
3)如果静态页面不存在,那么我想默认使用另一个页面,比如Workshop.php。 URL将是相同的 - MySite / Topics / Whatever - 但不是显示来自Whatever.php(在这种情况下不存在)的内容,而是显示来自Workshop.php的内容。
那么确定文件是否存在以及链接到其他文件的最佳方法是什么?
有两种可能的解决方案可以想到,虽然我真的不知道如何实施这两种解决方案...
1)我想要显示的静态页面的名称(例如Ecology)将始终与数据库表中的值匹配,即字段URL。因此,如果我的数据库表具有值" Migration,"它将尝试包含名为Migration.php的文件。所以也许有某种解决方案可以将数据库值与文件名相匹配。
2)如果我使用require命令包含文件,并且该文件不存在,则会显示错误并导致我的页面被杀死。有没有办法用命令替换该错误而不是链接到另一个文件?
以下是我的一个包含脚本的示例,其中$ MySite =网站名称,$ Section =该部分(例如主题)。
require_once($BaseINC."/inc/D/$MySite/$Section/$URL.php");
感谢。
答案 0 :(得分:1)
我不认为包含页面是更好的方法。 您也可以将数据保存在数据库中,并动态构建页面。
无论如何,您可以在require或包含文件之前测试文件是否存在php函数file_exists():
if(file_exists($filename){
require_once($filename);
}
答案 1 :(得分: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
}
我假设您的$BaseINC
var具有绝对路径的其余部分。