it-swarm.com.de

header ('location: ..') funktioniert nicht

(1) Ich lade gerade meine Website auf einen Remote-Webserver hoch. 

(2) Das Vorlagensystem der Site ist so eingerichtet, dass alle Seiten durch das Senden von URL-codierten Get-Anforderungen an index.php gebildet werden.

(3) Das Laden der ersten Seite funktioniert. Diese Seite bestimmt den Speicherort der nächsten Seite, indem der Wert des Formulars ausgewertet wird.

(4) Die Umleitung auf die nächste Seite wird ausgeführt mit: header('location: next_page')

(5) Aus irgendeinem Grund wird die Umleitung nicht durchgeführt. So sieht der Code aus:

$error = "";
if(isset($_POST['index_choice'])){
    $path_choice = isset($_POST['path']) ? $_POST['path'] : NULL;

    //echo $path_choice;
    //echo $page_inc;

    //nothing after this

    if($path_choice != null){

        if($form->is_connected()){

            //if($path_choice != "" || $path_choice != NULL){
                if($path_choice == "new"){

                    //header('location: /login.php');
                    //header('location: page/login');
                    header('location: /index.php?page=login');
                    exit();

                }
                else{

                    //header('location: /amend.php');
                    //header('location: page/amend');
                    header('location: /index.php?page=amend');
                    exit();
                }
            //}
            /**
            else{
                //destroy_session();
                $error = "You haven't selected a path. Please choose a path";
            }
             *
             */
        }
        else{
            //destroy_session();
            $error = "Problems with connecting to the database";
        }
    }else{
        //destroy_session();
        $error = "You have not indicated your choice";
    }

}

GELÖST 

Es ging darum, nach einem ?> irgendwo im Code ein Leerzeichen zu haben. Dies wurde mir gezeigt, nachdem die folgenden Befehle oben im Code platziert wurden: 

 error_reporting(E_ALL); ini_set('display_errors', 'On'); 

Ich möchte allen Menschen danken, die versucht haben zu helfen.

13
Fortisimo

Sieht so aus, als würden Sie Text an den Browser senden, bevor Sie die Kopfzeile senden ('location'). Sie können keine Inhalte an Ihren Browser senden, bevor Sie einen Header () ausführen, da Ihr Echo das Senden eines Headers erzwingt. Kommentieren Sie diese Zeilen und sehen Sie, ob es funktioniert: 

// echo $path_choice;
// echo $page_inc;

Nun wird Ihre Kopfzeile gesendet und Sie werden umgeleitet.

16
Karst Lok

füge diesen Code zu first des Codes hinzu:

<?php
ob_start();
?>
13
Erfan Safarpoor

Sie können die Javascript-Methode zum Umleiten der Seite ausprobieren:

echo '<script>window.location = "'.$url.'";</script>';
10
shasi kanth

Funktioniert ein einfaches PHP - Skript wie folgt?

<?php header('Location: /index.php?page=login'); ?>

Sie müssen auch sicherstellen, dass der Codepfad mit $path_choice != null und $form->is_connected() === true tatsächlich verwendet wird, da Ihre Fehlerzustände keine HTTP-Header festlegen.

3
joschi

Ich sehe ein 'destroy_session ()'. Verwenden Sie session_start () irgendwo?.

Tipps zum Debuggen: set error_reporting (E_ALL) (einschließlich E_NOTICE) . Dadurch erhalten Sie die Zeile, in der die Header gesendet werden.

Andere Problemquellen: - BOM - zusätzliche Zeilen vorher in einer eingeschlossenen Datei

3
Lekensteyn

Ich glaube, Sie müssen Ihren If-Stack überprüfen und sicherstellen, dass Sie in jede Ihrer Schleifen einsteigen. Platzieren Sie nach jeder if-Anweisung ein Echo, um sicherzustellen, dass der Header () sogar ausgewertet wird, und Ihre Schleife früher als erwartet abgeschnitten wird.

Mein Verdächtiger hat mit der Verwendung von null und $ path_choice! = Null zu tun. Haben Sie es mit is_null () oder isset () versucht, da diese speziell darauf ausgelegt wurden, zu überprüfen, ob eine Variable NULL ist. Der Operand! == kann auch in diesem Fall funktionieren, aber ich bin mir nicht sicher, ob PHP das hat. 

2
Nucleon

Stellen Sie sicher, dass vor <?php der PHP-Datei kein Leerzeichen vorhanden ist. Es könnte hilfreich sein, wenn Sie den Typ der Dateikodierung in UTS_8 ohne Stückliste und Rücktaste kurz vor <?php geändert haben und sicherstellen, dass Sie nach nichts in der Datei session start() haben. Es sollte kurz danach sein

2
Nerudo

Versuchen Sie es einfach. es wird klappen

echo "<script type='text/javascript'>  window.location='index.php'; </script>";

anstelle von header("location: index.php");

Stellen Sie nur sicher, dass Sie vor dem PHP-Code kein Leerzeichen haben, da dies eine Rolle spielt.

Zum Beispiel

<?php
some code this is the correct way
?>

--------------

<?php
some code this is the incorrect way the space above matters
?>
1
phpapprentice

Wenn Sie alles versucht haben, kann dieses Beispiel helfen (HTML/PHP):

<?php
    header("HTTP/1.0 404 Not Found");
    echo '<html>
            <head>
                <meta http-equiv="Refresh" content="0;url=http://www.url.com/index.php?code=404" />
            </head><body></body>
          </html>';
?>
0
Clayton Kappaz

Stellen Sie sicher, dass sich am Anfang Ihres Codes kein Leerzeichen befindet

Z.B:

------whitespace----
<?php
.
.
.
. ?>

Entfernen Sie Leerzeichen aus der ersten Zeile, sodass <?php in der ersten Zeile stehen muss.

0
Harpal Singh