PHP-setcookie();不工作(无法修改标题信息-标题已发送)
我得到这个错误: 警告:无法修改标题信息-标题已由第24行/removed/loginform.php中的/removed/loginform.php:2处开始的输出发送 我知道当我尝试设置cookie时会出现错误,这是因为setcookie之前不能有任何输出。。。问题是,之前没有输出(至少从我所看到的情况来看)。它说“<?php”是一个标题,我不明白这一点。如果setcookie只能在PHP中使用,并且<?PHP是一个标头,那么如何使用setcookie而不出现此标头错误 我的代码:PHP-setcookie();不工作(无法修改标题信息-标题已发送),php,setcookie,Php,Setcookie,我得到这个错误: 警告:无法修改标题信息-标题已由第24行/removed/loginform.php中的/removed/loginform.php:2处开始的输出发送 我知道当我尝试设置cookie时会出现错误,这是因为setcookie之前不能有任何输出。。。问题是,之前没有输出(至少从我所看到的情况来看)。它说“
<!--Database Connections-->
<?php include "../../includes/dbpractice_con.php"; ?>
<?php
//Declare variables
$username = "";
$password = "";
$message = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") { //Retrieve from form when submit is clicked.
//Escape to prevent SQL injection.
$username = mysqli_real_escape_string($connection, $_POST['username']);
$password = mysqli_real_escape_string($connection, $_POST['password']);
$check = mysqli_query($connection, "SELECT * FROM users WHERE username='$username' AND password='$password'");
$rowCount = mysqli_num_rows($check);
if ($rowCount == 1) {
$cookieExpiration = time() + 757368000; //1 year
setcookie("username", $username, $cookieExpiration);
} else {
$message = "Invalid username or password. <br/>Don't have an account? Click <a href=\"registerform.php\">here</a> to register.<br/><br/>";
}
}
?>
<html>
是HTML输出,即使它只是一条注释。请将其删除,然后重试
编辑:
PHP块之间还有一个空格。尝试将include放在主PHP块中。
是HTML输出,即使它只是一条注释。请将其删除,然后重试
编辑:
PHP块之间还有一个空格。尝试将include放入主PHP块。尝试以下操作:
<?php
// Database connections
include "../../includes/dbpractice_con.php";
//Declare variables
// ... proceed with code ...
试试这个:
<?php
// Database connections
include "../../includes/dbpractice_con.php";
//Declare variables
// ... proceed with code ...
一般来说,这意味着您在调用setcookie()之前已经向客户端发送了一些内容
进行简单测试:
<?php
ob_start();
include "../../includes/dbpractice_con.php"; ?>
# ... rest of your code... #
只是为了确保之前没有输出
之外的任何内容都是HTML,并发送给用户。那么这个
<!--Database Connections-->
<?php include "../../includes/dbpractice_con.php"; ?>
这些不是
something<?php ?>
什么
或
什么
或
(如果文件已另存为UTF-8)
查看您的dbpractice\u con.php,检查它是否保存为ANSI(使用“另存为”对话框的记事本检查),确保所有内容都在之间,并且标记前后没有一个字符。不要在同一个脚本中使用多个标记,因为这会增加不必要输出的风险。通常这意味着您在调用setcookie()
之前已经向客户端发送了一些内容
进行简单测试:
<?php
ob_start();
include "../../includes/dbpractice_con.php"; ?>
# ... rest of your code... #
只是为了确保之前没有输出
之外的任何内容都是HTML,并发送给用户。那么这个
<!--Database Connections-->
<?php include "../../includes/dbpractice_con.php"; ?>
这些不是
something<?php ?>
什么
或
什么
或
(如果文件已另存为UTF-8)
查看您的dbpractice\u con.php,检查它是否保存为ANSI(使用“另存为”对话框的记事本检查),确保所有内容都在之间,并且标记前后没有一个字符。不要在同一个脚本中使用多个标记,因为这会增加不必要输出的风险。PHP不知道它是什么,它只看到
标记中的文本,所以它将其作为输出发送。不起作用。对于我来说,这个错误几乎总是在php试图写入或更改响应头之前输出的空格或回车。谢谢。我把include放在主PHP块中,它工作了。PHP不知道它是什么,它只看到
标记中的文本,所以它将其作为输出发送。不工作。对于我来说,这个错误几乎总是在php试图写入或更改响应头之前输出的空格或回车。谢谢。我将include放在主PHP块中,它起了作用。@VBCPP这是同一个问题,但您引用的问题没有任何详细说明问题最初是如何在那里产生的。您不能在完整输出之前有任何内容,也不能包含“./../includes/dbpractice\u con.PHP”的内容因为这可能包含可能导致问题的代码。@Irdrah dbpractice_con.php的内容:@mega-well这仍然没有包括在问题中,但您的问题似乎已经解决了,所以这并不重要。@VBCPP这是同一个问题,但是您提到的问题没有任何细节来解释问题最初是如何产生的。您不能在完整输出之前有任何内容,也不能在您的问题中包含“../../includes/dbpractice\u con.php”的内容,因为这可能包含可能导致问题的代码。@Irrah dbpractice_con.php的内容:@mega-well这仍然没有包括在问题中,但您的问题似乎已经解决了,所以这并不重要。
<?php ?>