如果 REQUIRE_ONCE 存在,HEADER 命令不起作用[重复]
Posted
技术标签:
【中文标题】如果 REQUIRE_ONCE 存在,HEADER 命令不起作用[重复]【英文标题】:HEADER command doest work if REQUIRE_ONCE exist [duplicate] 【发布时间】:2021-09-11 15:20:51 【问题描述】:我正在编写一个代码来连接到 mysql 并检索登录信息。我使用 connect.php 来保存我在 login.php 中使用 require_once 获得的敏感数据:
<?php
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "xxx";
?>
<?php
$checkMail= $_POST["email"];
$checkPwd= $_POST["password"];
$registration_status='Active';
require_once ('connect.php');
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error)
die("Connection failed, please retry later: " . $conn->connect_error);
$sql = "SELECT email, password, registration_type, registration_status, emailupdate FROM registration where email='".$checkMail."'";
$result = $conn->query($sql);
if ($result->num_rows == 1)
while($row = $result->fetch_assoc())
if ($row['registration_status'] == "Deactive")
session_start();
$_SESSION['error'] = "<b>This user name is deactivated. <br> Please create a new account.</b><span>";
header("Location: http://www.xxxxxxx//registration.php"); /* Redirect browser */
elseif (password_verify($checkPwd, $row['password']))
?>
通过上面的方法,db 连接正常,但是没有执行 header 命令。如果我在 login.php 中删除 require_once 并直接添加 connect.php 的内容,那么就有
$checkMail= $_POST["email"];
$checkPwd= $_POST["password"];
$registration_status='Active';
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "xxx";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error)
die("Connection failed, please retry later: " . $conn->connect_error);
$sql = "SELECT email, password, registration_type, registration_status, emailupdate FROM registration where email='".$checkMail."'";
$result = $conn->query($sql);
if ($result->num_rows == 1)
while($row = $result->fetch_assoc())
if ($row['registration_status'] == "Deactive")
session_start();
$_SESSION['error'] = "<b>This user name is deactivated. <br> Please create a new account.</b><span>";
header("Location: http://www.xxxxxxx/registration.php"); /* Redirect browser */
header 命令处理正确,重定向成功。
header 和 require_once 不兼容?还是我错过了什么?
感谢您的支持
【问题讨论】:
当然,它们是兼容的。您还尝试过什么来解决问题?此外,请注意您的 SQL 查询对于 SQL 注入是广泛开放的。最好看看准备好的语句$dbname = "xxx"; ?> <?php $checkMa
为什么要有结束标签和开始标签?如果那里有空格,它就是输出,你就有麻烦了:记住,header() 必须在发送任何实际输出之前调用,无论是通过普通的 html 标记、文件中的空行还是从 PHP。(来自manual)
“还是我错过了其他东西?” - 听起来您可能错过了以一种对开发来说合理的方式配置 PHP 错误报告。否则,您会收到一条错误消息,告诉您发生了什么,并明确在哪里创建了第一个输出。
我不会关闭并重新打开标签。这些是 2 个不同的脚本:connect.php 包含第一个脚本,而 login 包含第二个脚本。第一个脚本是通过 require_once 命令调用的。无论如何,我会按照 Nico Haase 在第一个答案中的建议查看代码。
另外,在设置标题后使用exit
会有所帮助,只是为了强制停止脚本在那里
【参考方案1】:
Whitespace
标题不起作用,因为您打印了空格。删除此关闭/打开标签组合,然后重试。
【讨论】:
发布代码图片不好,将代码发布为文本(带有标记)就像制作和发布图片一样容易。 我不会关闭并重新打开标签。这些是 2 个不同的脚本:connect.php 包含第一个脚本,而 login 包含第二个脚本。无论如何,我会按照 Nico Haase 在第一个答案中的建议查看代码。以上是关于如果 REQUIRE_ONCE 存在,HEADER 命令不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章