2013-03-27 71 views
0

工作我使用這個功能來重定向到投資組合後,用戶登錄...功能不是IIS

function redirect($destination) 
{ 

    //handle url 
    if (preg_match("/^https?:\/\//", $destination)) 
    { 
     header("Location: " . $destination); 
    } 

    // handle absolute path 
    else if (preg_match("/^\//", $destination)) 
    { 
     $protocol = (isset($_SERVER["HTTPS"])) ? "https" : "http"; 
     $host = $_SERVER["HTTP_HOST"]; 
     header("Location: $protocol://$host$destination"); 
    } 

    // handle relative path 
    else 
    { 
     // adapted from http://www.php.net/header 
     $protocol = (isset($_SERVER["HTTPS"])) ? "https" : "http"; 
     $host = $_SERVER["HTTP_HOST"]; 
     $path = rtrim(dirname($_SERVER["PHP_SELF"]), "/\\"); 
     header("Location: $protocol://$host$path/$destination"); 
    } 

    // exit immediately since we're redirecting anyway 
    exit; 
} 

使用它產生的SSL連接錯誤中鉻: 錯誤107(淨值:: ERR_SSL_PROTOCOL_ERROR) :SSL協議錯誤。 in firefox 連接到本地主機時發生錯誤:63077。

SSL received a record that exceeded the maximum permissible length. 

(錯誤代碼:SSL_ERROR_RX_RECORD_TOO_LONG

請不要告訴我的問題...... 告訴我的解決方案或替代 我有一個Windows Azure的帳戶... 它甚至不工作有.... 親切的問候 維沙爾

PS:我知道這是要花費大量的時間.... 我真的需要爲我的想象杯親ject ..

+0

http://stackoverflow.com/a/2522413/215042您甚至在IIS中啓用SSL和/或安裝證書嗎?爲什麼你重定向到63077而不是443? – RobIII 2013-03-27 17:39:20

+0

@Robll它也不適用於Windows Azure ... – 2013-03-27 17:54:43

+1

我的評論適用於IIS,Azure,Apache,無論您使用什麼。在每種情況下,您都需要配置SSL /安裝證書等。並且可能使用端口63077也無法幫助解決此問題... – RobIII 2013-03-27 18:16:49

回答

0

似乎你有問題得到正確的協議。我不知道這是否會在IIS上工作,但我一般用在Linux下面的 - 無法想象,爲什麼它不會工作:

function getProtocol() 
{ 
     return $_SERVER['SERVER_PORT']=='443'?'https://':'http://'; 
} 

這應該去除大部分的複雜性在你的代碼?