我正在尝试在数据库连接失败时重定向到注销页面。我该怎么做?它始终显示错误消息,但不显示我指定的错误消息。感谢提前感谢。
理查德
代码:
function ms_connect() {
// Create connection
// Microsoft Access
$db_source = DB_SERVER;
$db_system = DB_SYSTEM_SEC;
$odbc_driver = "driver={microsoft access driver (*.mdb)};dbq=" . $db_source . ";systemdb=" . $db_system;
$conn = odbc_connect($odbc_driver, DB_SERVER_USERNAME,DB_SERVER_PASSWORD); // Error returned here!
if ($conn) {
return $conn;
} else{
exit("Connection could not be established.");
header ("Location: /logout.php");
}
}
它没有显示“Connection can ......”
error shown
PHP Warning: odbc_connect(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Not a valid account name or password., SQL state 08004 in SQLConnect in C:\inetpub\wwwroot\functions\functions.php on line 11
答案 0 :(得分:1)
您正在退出,这将在重定向之前终止脚本。 您可以将错误消息作为get参数传递,并在需要时将其显示在页面上。
您的代码应如下所示:
if ($conn) {
return $conn;
} else{
header ("Location: /logout.php?error=Connection+could+not+be+established.");
}
此外,如果您想隐藏警告,请添加:
error_reporting(0);
ini_set('display_errors', 'Off');
答案 1 :(得分:0)
您看到的警告是由odbc_connect
函数触发的,虽然奇怪的是exit
字符串未打印,但您的重定向不起作用并不奇怪,因为退出会阻止它被执行。
尝试:
if ($conn !== false) {
return $conn;
} else{
header ("Location: /logout.php");
exit();//just in case
}
您可以使用连接功能前面的“@”符号通过连接忽略警告(并且您应该)。 (这比忽略所有错误更优雅。)
$conn = @odbc_connect($odbc_driver, DB_SERVER_USERNAME,DB_SERVER_PASSWORD); // Error returned here!
修改强>: 一个很好的方法,仍然向用户显示消息加上重定向是使用html元重定向:
if ($conn !== false) {
return $conn;
} else{
echo '<html><head><meta http-equiv="refresh" content="5;url=/logout.php" /></head><body>Could not create a connection, redirecting in 5 seconds.</body></html>';
exit();
}