3 Stimmen

Beste Weiterleitungsmethoden?

In einer PHP-Datei, wenn ich brauche, um einen Benutzer umzuleiten und Header sind bereits gesendet, so kann ich nicht verwenden php's Header-Funktion, in diesem Fall, die die beste Methode, um einen Benutzer umzuleiten ist?

Die schnellste und zuverlässigste Methode, unabhängig von der Browsermarke des Nutzers?

echo '<script type="text/javascript">window.top.location="http://localhost/";</script>';

// OR

echo '<meta http-equiv="refresh" content="0;url=' .$location. '">';

UPDATE

Hier ist mein Endresultat-Code, den ich jetzt verwende, wenn Kopfzeilen bereits gesendet werden, wo ich nicht auf die Homepage umleiten kann, bringe ich einfach die Homepage zu mir, so dass anstelle der Body-Seite, wird es meine Homepage und Fußzeile enthalten

function validlogin($url) {
    if (!isset($_SESSION['auto_id']) || ($_SESSION['auto_id']=='')) {
        $_SESSION['sess_login_msg'] = 'Please login';
        $_SESSION['backurl'] = $url;
        $temp = '';
        if (headers_sent() === false){
            header("Location: /");
            exit();
        }else{
            //header is already sent so we will just bring the homepage to us instead of going to it!!!
            include 'mainbody.inc.php';
            include 'footer.inc.php';
            exit();
        }
    }
}

7voto

Kornel Punkte 94135

Benutzen Sie keines davon! Sie sollten immer HTTP-Weiterleitungen verwenden.

Utilice ob_start() um den Inhalt zu puffern und das Problem der bereits gesendeten Kopfzeilen zu vermeiden.

Sie könnten auch versuchen, eine MVC-Anwendung zu schreiben, bei der Sie wissen, ob Sie umleiten müssen, bevor Sie etwas ausgeben (aber mit ob_start() das ist nicht notwendig).

4voto

Alix Axel Punkte 146320
function Redirect($url, $permanent = false)
{
    if (headers_sent() === false)
    {
        header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);
    }

    exit();
}

Redirect('http://www.google.com/', false);

Verwenden Sie wiederum ob_start();

2voto

Ryan Florence Punkte 13231

Huckepack auf porneL:

Das große Problem bei Ihren Methoden: Sie töten die Zurück-Taste. Die Abschaffung der Zurück-Schaltfläche ist das Ärgerlichste, was es im Internet gibt.

Ich habe noch nie eine Notwendigkeit für eine Umleitung nach dem Senden von Kopfzeilen gefunden. Sie sollten wahrscheinlich überdenken, was Sie zu tun versuchen.

-1voto

easement Punkte 6031

Ich würde sagen, die zweite.

Wenn der Benutzer Javascript deaktiviert hat oder einen Browser ohne Javascript verwendet, wird die 1. Umleitung nicht funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X