在某个php字典上创建错误页面

时间:2011-09-04 22:24:55

标签: php html .htaccess

我正在尝试创建一个错误页面,但我想在某个字典上指定它。 问题是它是一个php文件。 例如,如果我的页面只有一个名为page1的标题而且没有其他内容,我想为每个不存在的页面2显示错误。 http://example.com/showpage.php?title=page1 http://example.com/showpage.php?title=page2 我不想使用htaccess,因为在同一个字典中还有其他文件我想显示另一条错误消息。

2 个答案:

答案 0 :(得分:1)

当页面名称相同且只有参数不同时,我会避免发送非200标题。

但是,你当然可以这样做:

if(不存在){    一些错误信息 } else {    渲染它 }

如果您想发送404错误,我会使用重写规则来获得如下网址:

http://blah/page/page1

然后您可以发送404状态,使浏览器混淆的可能性更低。

重写,假设你正在使用Apache,就像:

RewriteEngine On RewriteRule ^ page / page([0-9])/?$ /showpage.php?title=page$1

注意:未经测试的重写规则,但如果您有兴趣走这条路,那么在阅读Apache文档之间,您应该能够获得它。

答案 1 :(得分:1)

您是在查询数据库还是包含真实文件,例如page1.php?

修改 如果您使用的是MySQL,那么您希望对查询使用mysql_num_rows(),如果返回true,则执行所有回显,但如果返回false,则为include_once('error-for-non-existing-title.php' ); (可选)如果未设置$ title变量,则可以抛出404标题。如果您想

,可以在.htaccess中重写404文档

我认为对于在线阅读器,你应该有多个变量($ _GET ['title'])和$ _GET ['page']。使用$ title来区分不同的标题和$ page以浏览它的页面。

我猜你还不知道如何使用PDO,所以......

$link = mysql_connect("localhost", "username", "password");
mysql_select_db("database_name", $link);

if(isset($_GET['title']))  {
$title = $_GET['title'];

$query = mysql_query("SELECT * FROM pages WHERE title='$title'", $link);

$num_rows = mysql_num_rows($query);

//if there is a page
if($num_rows!=0) {

//fetch the data as associative array
$result = mysql_fetch_assoc($query);

echo $result['title'],'<br />';
}
else include_once('error.php');
}

//optionally if you want to, you could throw a 404 header if there is no $title
//variable set. Just remove the double slashes from the next line of code.
//else header("HTTP/1.1 404 Not Found");