获取此错误:警告:无法修改标头信息 - 已在blablabla第21行中发送的标头(在/ blablabla中开始输出) require_once( “的functions.php”);.但是我需要在那一点重定向,下面的最后一行代码是第21行
<?php
require_once("functions.php");
$username = trim($_POST['username']);
$password = trim($_POST['password']);
if ($username&&$password){
session_start();
require_once("Connection.php");
mysqli_select_db($db_server, $db_database) or
die("Couldn't find db");
$username = clean_string($db_server, $username);
$password = clean_string($db_server, $password);
$query = "SELECT * FROM UserDatabase WHERE username='$username'";
$result = mysqli_query($db_server, $query);
if($row = mysqli_fetch_array($result)){
$db_username = $row['username'];
$db_password = $row['password'];
if($username==$db_username&&($password)==$db_password){
$_SESSION['username']=$username;
$_SESSION['logged']="logged";
header('Location: Log_homepage.php');
答案 0 :(得分:2)
如果您在调用header()
之前发送了正文数据,则会出现此错误。在这里,看起来罪魁祸首是你的程序中的某个地方。我在这里看到的唯一回应是sql错误,因为你似乎不太可能错过它,我猜这个问题出现在functions.php或Connection.php中。
答案 1 :(得分:2)
这通常发生在您调用更改标题()之前已经存在一些html时。确保它上面没有HTML输出,甚至没有空格。
答案 2 :(得分:1)
正如其他人所说,错误信息通常是在调用header
之前输入某种输出引起的。可能是文件在打开<?php
标记之前有文本,或者您可能调用了写入文件的printf
之类的函数。无论是什么,如果你要打电话给header
,这种事情都行不通。
此外,当您使用header('Location
时...您应该根据HTTP标准放置绝对URL。有些浏览器会接受相对URL,但这仍然是不好的做法。如果您正在尝试模块化您的代码(并且您应该)添加类似
header('Location: http://' . $_SERVER['SERVER_NAME'] . '/Log_homepage.php');
如果你在,example.com
,那将等同于
header('Location: http://example.com/Log_homepage.php');