如果文件存在脚本

时间:2013-06-11 23:29:31

标签: php require

我在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");

感谢。

2 个答案:

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