2012-07-18 173 views
0

以下基本代码按预期工作。页面未找到页眉错误

<?php 
mysql_connect("localhost", "user", "[email protected]") or die(mysql_error()); 
echo "Connected to MySQL<br />"; 
?> 

什么我需要的是,而不是mysql_error,页面未找到404错误应该返回。 我正在寻找尽可能短的代码,因为这将被用作负载平衡器检查。

以下似乎不起作用。我得到一个空白页面。

mysql_connect("localhost", "user", "[email protected]") or die(header("HTTP/1.0 404 Not Found")); 
+1

一个空白页,似乎一个很适当的响应。你在日志中遇到错误吗?你检查过被返回的HTTP头吗? – deceze 2012-07-18 12:12:46

回答

1

我会做到以下几点:牢记我使用mysqli的替代,使用mysql_的*强烈劝阻。

$mysqli = new mysqli('localhost', 'user', 'password', 'dbname'); 

if ($mysqli->connect_error) { 
    header("HTTP/1.0 404 Not Found"); 
} else { 

} 

您确定要返回404虽然,作为资源已发现这是一个误导,我将返回500错误作为这将是更合适的服务器错误。

有关HTTP状态代码的列表,请参阅here

1

mysql_connect will return a false value if the connection was not successful.

$connected = mysql_connect("localhost", "user", "[email protected]"); 
if (!$connected){ 
    header("HTTP/1.0 404 Not Found"); 
} 

不知道你使用的正是这种代码 - 但不能够连接到你的数据库并不一定意味着所请求的页面不存在 - 它可能也是你的sql服务器的问题。


作为一个附注 - 避免使用日期的mysql_ *函数。使用它们获取新代码的能力很强 discouraged。 更多现代化的替代品可供选择并更好地维护。 考虑学习 prepared statements 改为使用 PDO or MySQLi。 当严格使用时,避免繁琐和手动转义部分,因此变得更容易堆积,因为副产品更安全使用。 请参阅a PDO tutorial开始。

+2

从什么时候'mysql_ *'抛出异常? – deceze 2012-07-18 12:11:28

+0

@dec - 谢谢你 - 你的确是100%正确的...... – Lix 2012-07-18 12:13:25

1

使用库MySQLi或PDO,mysql_ *将得到大幅贬值

$link =mysql_connect("localhost", "user", "[email protected]"); 
if (!$link) { 
    header("error.php"); 
} 
echo 'Connected successfully'; 
1

如果检查我只想做一个并返回500错误,因为如果谷歌试图查看索引页面,当您无法连接,并把它回404 ,它会认为您的网站已损坏,您将失去排名并链接到该网页。

500将至少表明,有一个服务器的问题,但是这将是固定:

if(!mysql_connect('localhost', 'user', 'pass')){ 
    header('HTTP/1.1 500 Server error'); 
    exit(); 
} 
+0

是否也可以像查看数据库一样检查查询时间,如果超过1秒就返回500错误? – shantanuo 2012-07-19 09:15:52