示例#1
0
 /**
  * \static
  * Performs an HTTP redirect.
  *
  * \param  $path  The path to redirect
  * \param  $parameters  \see createRedirectUrl()
  * \param  $status  The HTTP status code as a string
  * \param  $encodeURL  Encode the URL. This should normally be true, but
  * may be set to false to avoid double encoding when redirect() is called
  * twice.
  */
 static function redirect($path, $parameters = array(), $status = false, $encodeURL = true)
 {
     $url = eZHTTPTool::createRedirectUrl($path, $parameters);
     if (strlen($status) > 0) {
         header($_SERVER['SERVER_PROTOCOL'] . " " . $status);
         eZHTTPTool::headerVariable("Status", $status);
     }
     if ($encodeURL) {
         $url = eZURI::encodeURL($url);
     }
     eZHTTPTool::headerVariable('Location', $url);
     /* Fix for redirecting using workflows and apache 2 */
     echo '<HTML><HEAD>';
     echo '<META HTTP-EQUIV="Refresh" Content="0;URL=' . htmlspecialchars($url) . '">';
     echo '<META HTTP-EQUIV="Location" Content="' . htmlspecialchars($url) . '">';
     echo '</HEAD><BODY></BODY></HTML>';
 }
    /**
     * Performs an HTTP redirect.
     *
     * @param string $path The path to redirect to
     * @param array $parameters See createRedirectUrl(). Defaults to empty array.
     * @param bool $status The HTTP status code as a string (code + text, e.g. "302 Found"). Defaults to false.
     * @param bool $encodeURL Encodes the URL.
     *                        This should normally be true, but may be set to false to avoid double encoding when redirect() is called twice.
     *                        Defaults to true
     * @param bool $returnRedirectObject If true, will return an ezpKernelRedirect object.
     *
     * @return null|ezpKernelRedirect
     */
    static function redirect($path, $parameters = array(), $status = false, $encodeURL = true, $returnRedirectObject = false)
    {
        $url = eZHTTPTool::createRedirectUrl($path, $parameters);
        if (strlen($status) > 0) {
            header($_SERVER['SERVER_PROTOCOL'] . " " . $status);
            eZHTTPTool::headerVariable("Status", $status);
        }
        if ($encodeURL) {
            $url = eZURI::encodeURL($url);
        }
        eZHTTPTool::headerVariable('Location', $url);
        /* Fix for redirecting using workflows and apache 2 */
        $escapedUrl = htmlspecialchars($url);
        $content = <<<EOT
<HTML><HEAD>
<META HTTP-EQUIV="Refresh" Content="0;URL={$escapedUrl}">
<META HTTP-EQUIV="Location" Content="{$escapedUrl}">
</HEAD><BODY></BODY></HTML>
EOT;
        if ($returnRedirectObject) {
            return new ezpKernelRedirect($url, $status ?: null, $content);
        }
        echo $content;
    }