页眉中出现找不到页面的错误


page not found error in header

以下基本代码按预期工作。

<?php
mysql_connect("localhost", "user", "user@123") or die(mysql_error());
echo "Connected to MySQL<br />";
?>

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

以下内容似乎不起作用。我收到一张空白页。

mysql_connect("localhost", "user", "user@123") or die(header("HTTP/1.0 404 Not Found"));

我会做以下事情:记住我使用的是mysqli,强烈建议使用mysql_*。

$mysqli = new mysqli('localhost', 'user', 'password', 'dbname');
if ($mysqli->connect_error) {
    header("HTTP/1.0 404 Not Found");
} else {
}

不过,你确定要返回404吗,这是误导性的,因为已经找到了资源,我会将500错误作为服务器错误返回,这更合适。

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

如果连接不成功,

mysql_connect将返回一个错误值。

$connected = mysql_connect("localhost", "user", "user@123");
if (!$connected){
  header("HTTP/1.0 404 Not Found");
}

不确定您使用此代码的确切目的——但无法连接到数据库并不一定意味着找不到请求的页面——这也可能是sql server的问题。


顺便说一句,避免使用过时的mysql_*函数。将它们用于新代码是非常重要的气馁。有更现代化的替代品可供选择,并得到更好的维护。考虑学习准备好的报表而是使用PDO或MySQLi。当严格使用时,它们避免了繁琐和手动的脱离部分,因此变得更容易堆积并且作为副产品使用更安全。请参阅PDO教程以开始。

使用mysqli或PDO,mysql_*将获得折旧

$link =mysql_connect("localhost", "user", "user@123");
if (!$link) {
    header("error.php");
}
echo 'Connected successfully';

我只会做一个if检查并返回一个500错误,因为如果谷歌在你连接失败时试图查看索引页面并将其返回404,它会认为你的网站已损坏,你将失去该页面的排名和链接。

500将至少显示存在服务器问题,但它将被修复:

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