Require_once阻止我重定向PHP

时间:2017-03-06 22:44:45

标签: php

我正在php中创建一个登录页面。我想在用户成功登录后将用户重定向到自动页面。由于我使用的是pdo,我使用require_once来调用pdo.php。但是,这行代码阻止重定向指定的页面。如果我删除require_once代码,我可以在击中cancle后成功返回索引页面。以下代码将我带到auto.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 (@)";
        }

}
?>

2 个答案:

答案 0 :(得分:0)

检查您的php所需文件没有发送输出,例如,通过空格或行结束,发送到浏览器块的任何输出进一步重定向或任何其他标头,关闭php标签不是最佳做法,尤其是因为这种问题

如果这不是问题,请检查您是否有错误(解析或丢失文件),以便在脚本顶部显示所有内容

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

答案 1 :(得分:0)

这是一个引导问题。 bootstrap.php输出一些阻止重定向的信息。我移动了require_once&#34; bootstrap.php&#34;在标题标记下方并解决了问题。