连接失败,请继续注销


failed connection proceed to logout

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

Richard

代码:

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");
        }
}

它没有显示"连接可能…"

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

您正在执行退出操作,这将在重定向之前终止脚本。如果需要,您可以将错误消息作为get param传递并在页面上显示。

你的代码应该是这样的:

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
    }

您可以通过使用connect函数前面的"@"符号的连接忽略警告(您应该忽略)。(这比忽略所有错误更优雅)。

$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();
    }