【问题标题】:Require_once prevent me to redirect PHPRequire_once 阻止我重定向 PHP
【发布时间】:2017-07-26 23:51:58
【问题描述】:

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

}
?>

【问题讨论】:

  • 可能是因为文件不存在所以代码停止执行。
  • 检查日志。什么错误?
  • 你试过在if (isset($_POST['cancel']))之后使用require_once吗?
  • if (isset($_POST['cancel'])) 之后的require_once 将允许癌症按钮工作,页面将被重定向到索引页面。但是,发送重定向(自动页面)仍然会有同样的问题,因为我需要调用 pdo 来检查用户登录凭据

标签: php


【解决方案1】:

检查您的 php 所需文件是否发送任何输出,例如末尾的空格或行,发送到浏览器的任何输出阻止进一步重定向或任何其他标题,关闭 php 标签不是最佳做法,尤其是因为这样的问题

如果这不是问题,请检查您没有错误(解析或丢失文件),以显示它们都包含在您的脚本顶部

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

【讨论】:

    【解决方案2】:

    这是一个引导问题。 bootstrap.php 输出一些阻止重定向的信息。我将 require_once "bootstrap.php" 移到 header 标签下方并解决了问题。

    ps:还请记住,header() 必须出现在模型中的任何内容之前(session_start() 除外,它可以出现在 header 之前)。

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      相关资源
      最近更新 更多