2017-03-06 5 views
0

私はPHPでログインページを作成しています。私は彼らがうまくログインした後、自動ページにユーザーをリダイレクトしたい。私はpdoを使っているので、require_onceを使ってpdo.phpを呼び出しています。ただし、このコード行は、指定されたページのリダイレクトを防止します。 require_onceコードを削除した場合、私はcancleを打った後、インデックスページに正常に戻ることができます。次のコードは何も出力を例えば末尾に空白または行で、あなたのPHPに必要なファイルが送信されないページRequire_onceがPHPをリダイレクトできないようにします

<?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

おそらくファイルが存在しないため、コードの実行が停止している可能性があります。 –

+0

ログを確認します。エラーは何ですか? –

+0

あなたは 'の場合(ISSET($ _ POST [ 'キャンセル']))の後に' 'require_once'を使用しようとしたことがありますか? – DrKey

答えて

0

これはブートストラップの問題です。 bootstrap.phpは、リダイレクトを防止する情報を出力します。 require_once "bootstrap.php"をヘッダタグの下に移動して問題を解決しました。

0

チェック、ブラウワーブロック、さらにリダイレクトに送信されたすべての出力をauto.phpために私を取りますか、 phpタグを閉じる他のヘッダは、特にこの種の問題のため、ベストプラクティスではありません

これは問題ではない場合は、エラーがないことを確認してくださいあなたのスクリプトの先頭にこれを含めてください。

関連する問題