连接失败继续注销

failed connection proceed to logout

我试图在数据库连接失败时重定向到注销页面。我该怎么做?它总是显示错误消息,但不是我指定的错误消息。感谢帮助,提前致谢。

理查德

代码:

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 could..."

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

您正在退出,这将在重定向之前终止脚本。 如果需要,您可以将错误消息作为获取参数传递并显示在您的页面上。

您的代码应如下所示:

if ($conn) {
        return $conn;
    } else{
        header ("Location: /logout.php?error=Connection+could+not+be+established.");
    }

此外,如果您想隐藏警告,只需添加:

error_reporting(0);
ini_set('display_errors', 'Off');

您看到的警告是由 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();
    }