到目前为止,我已经阅读了4或5个不同的主题,但在尝试了这些建议后,我无法弄清楚这一点。
我只是想设置一个cookie,但是在5页的3页中,出现了“无法修改”错误。我的页面仍在加载。
此代码包含在所有页面上,并在所有页面上的html之前加载。 (它包含在我的header.php文件中,该文件位于所有页面上。)
<?php
if (!isset($_COOKIE['loggedinGaArms'])){
header("location:index.php");
exit();
}
else{
$seconds = 2628000 + time();
setcookie(loggedinGaArms, date("F js - g:i a"), $seconds);
}
/**
* Check Logged-in Status via Cookie
*/
?>
我的Header.php文件(只是前几行)
<?php
include_once "cookieset.php";/******** SET COOKIE INCLUDE ***/
$page = basename($_SERVER['PHP_SELF']);
?>
<!doctype html><!-------------- FIRST LINE OF HTML ----------->
<html>
<head>
<meta name="robots" content="noindex">
<meta charset="UTF-8">
<title>Georgia Arms Inventory</title>
<link rel="stylesheet" type="text/css" href="_/style.css">
<script type="text/javascript" src="_/custom.js"></script>
</head>
<body>
<!-- Start Main Content -->
<div id="content">
我的数据库和html都是UTF-8。
答案 0 :(得分:2)
鉴于您已明确声明您将文件编码为UTF-8,您可能会看到的是在PHP文档开头有BOM(字节顺序标记)的结果。这构成了浏览器的输出,在IDE中通常是不可见的,但会导致您看到的失败。
其他有用的提示是从任何仅包含代码的PHP文件中删除尾部?>
标记。这是不必要的,并且为之后难以检测的空白区域打开了大门。
如果启用了错误报告,则错误应该清楚地指示输出的启动位置导致标头调用失败,因此我建议启动错误报告以查看真正的问题实际存在的位置。
答案 1 :(得分:1)
错误Cannot modify header information - headers already sent
错误意味着您在修改标头之前回显内容。发生此错误之前发送的数据应在打印错误之前显示在网页上。如果您在该内容之前移动setcookie()
函数,则会修复错误。
答案 2 :(得分:0)
这可能是您所包含的文件或正在使用的任何其他文件的问题。
确保此类文件的末尾没有PHP结束标记?>
(即,如果它们只执行逻辑,并且不输出任何HTML。
确保在任何文件上的开始标记<?php
之前没有意外空格。
否则,请考虑使用ob_start
和ob_get_clean
:http://php.net/manual/en/function.ob-start.php
答案 3 :(得分:0)
通常,只要您的php文件中有大量空格或注释,或者您可能没有结束?> php tag
,就会生成此问题。在打开<?php
之前检查是否有空格。
除此之外,您还可以在php文件的开头使用ob_start
。
你可以帮助