2017-03-06 1 views
0

Ich erstelle eine Login-Seite in PHP. Ich möchte den Nutzer auf die automatische Seite umleiten, nachdem er sich erfolgreich angemeldet hat. Da ich PDO verwende, benutze ich require_once, um pdo.php aufzurufen. Diese Codezeile verhindert jedoch, dass die angegebene Seite umgeleitet wird. Wenn ich den require_once-Code entferne, kann ich erfolgreich auf die Indexseite zurückgehen, nachdem ich cycle gedrückt habe. Der folgende Code wird mich nehmen Seite auto.phpRequire_once verhindern, dass ich PHP umleiten

<?php 

require_once "pdo.php"; 
require_once "bootstrap.php"; 

if (isset($_POST['cancel'])) { 
    // Redirect the browser to game.php 
    header("Location: index.php"); 
    return; 
} 

$failure = false; 


if (isset($_POST['email']) && isset($_POST['password']) ) { 

     if (strlen($_POST['email']) < 1 || strlen($_POST['password']) < 1) { 
     $failure = "User name and password are required"; 
     } 


    else if (strpos($_POST['email'], '@')!== false) 
    { 

     $e = htmlentities($_POST['email']); 
     $p = htmlentities($_POST['password']); 

     $sql = "SELECT email FROM users 
     WHERE email = '$e' 
     AND password = '$p'"; 

     echo "<p>$sql</p>\n"; 

     $stmt = $pdo->query($sql); 
     $row = $stmt->fetch(PDO::FETCH_ASSOC); 

     var_dump($row); 
     echo "-->\n"; 
     if ($row === FALSE) { 
     echo "Incorrect password"; 
     } 
     else { 
     header("Location: autos.php?name=".urlencode($_POST['email'])); 
     return; 
     } 
    } 
    else 
     { 
      $failure = "Email must have an at-sign (@)"; 
     } 

} 
?> 
+0

Wahrscheinlich, weil die Datei nicht existiert, deshalb stoppt der Code zur Ausführung. –

+0

Überprüfen Sie die Protokolle. Was ist der Fehler? –

+0

Haben Sie versucht, 'require_once' nach' if (isset ($ _ POST ['cancel'])) '' zu verwenden? – DrKey

Antwort

0

diese ist ein Bootstrap-Problem. Die bootstrap.php gibt einige Informationen aus, die das Umleiten verhindern. Ich habe die require_once "bootstrap.php" unter dem Header-Tag verschoben und das Problem gelöst.

0

überprüfen keine Ausgabe von Ihren PHP benötigten Dateien gesendet wird, durch ein Leerzeichen oder Zeile am Ende beispielsweise irgendeine Ausgabe an die Brower Block weiter Umleitung gesendet oder alle anderen Header, Schließen der PHP-Tag ist keine bewährte Methode, vor allem wegen dieser Art von Problem

Wenn dies nicht das Problem ist, überprüfen Sie, Sie haben keinen Fehler (Parse oder fehlende Datei), um sie alle anzuzeigen sind diese an der Spitze des Skriptes

error_reporting(-1); 
ini_set('display_startup_errors',true); 
ini_set('display_errors','stdout'); 
Verwandte Themen