2013-06-11 85 views
0

我正在使用MySite/Topics/index.php中的静态页面,该页面通过PHP和MySQL显示动态页面。我想创建两个并行的动态页面(URL和URL2)系列,它们显示来自三个可能位置的内容。默认情况下,每个动态页面(例如MySite/Topics/Ecology)显示存储在数据库表中的内容(如果数据库表中没有任何内容,该页面根本不显示任何内容)。如果文件存在脚本

2)我创建了一系列带有像MySite/Topics/Ecology2这样的URL的影子页面,显示存储在与“2”相同名称的文本文件中的内容(例如Ecology.php) 。这些页面对于我仍在使用的文章或用于存储笔记的文章很有用。

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

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

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

1)静态页面我要显示(如生态的名称)将始终与数据库表字段URL中的值匹配。因此,如果我的数据库表的值为“迁移”,它将尝试包含名为Migration.php的文件。所以也许有某种解决方案可以将数据库值与文件名进行匹配。 2)如果我使用require命令包含一个文件,并且该文件不存在,它将显示错误并杀死我的页面。有没有办法用命令替换该错误,而是链接到不同的文件?

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

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

谢谢。

回答

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具有绝对路径的其余部分。

+0

酷,那伟大工程:

无论如何,你可以,如果一个文件用PHP函数file_exists()需要或包含文件之前存在测试!谢谢。 –

1

我不认为包括网页是更好的方式来实现它的作品。 您也可以将页面的数据保存在数据库中,并动态构建页面。

if(file_exists($filename){ 
    require_once($filename); 
}