0

ユーザーがログインした後、この機能を使用してポートフォリオにリダイレクトしています...

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

使用すると、Chrome で SSL 接続エラーが発生します: エラー 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL プロトコル エラー。Firefox で localhost:63077 への接続中にエラーが発生しました。

SSL received a record that exceeded the maximum permissible length.

(エラーコード: ssl_error_rx_record_too_long

問題を教えないでください...解決策または代替手段 を教えてください私はWindows azureアカウントを持っています...そこでも機能していません.... よろしくVishal

PS:私はそれが多くの時間がかかることを知っています..私は私のImagine Cupプロジェクトのためにこれが本当に必要です..

4

1 に答える 1

0

正しいプロトコルの取得に問題があるようです。これが IIS で機能するかどうかはわかりませんが、Linux では通常次のように使用します。なぜ機能しないのか想像できません。

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

これにより、コードの複雑さのほとんどが取り除かれますか?

于 2013-03-27T17:41:41.287 に答える