无法修改标头信息错误 - 尝试了我能找到的一切

时间:2013-09-14 05:58:16

标签: php html cookies header

到目前为止,我已经阅读了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。

4 个答案:

答案 0 :(得分:2)

鉴于您已明确声明您将文件编码为UTF-8,您可能会看到的是在PHP文档开头有BOM(字节顺序标记)的结果。这构成了浏览器的输出,在IDE中通常是不可见的,但会导致您看到的失败。

其他有用的提示是从任何仅包含代码的PHP文件中删除尾部?>标记。这是不必要的,并且为之后难以检测的空白区域打开了大门。

如果启用了错误报告,则错误应该清楚地指示输出的启动位置导致标头调用失败,因此我建议启动错误报告以查看真正的问题实际存在的位置。

答案 1 :(得分:1)

错误Cannot modify header information - headers already sent错误意味着您在修改标头之前回显内容。发生此错误之前发送的数据应在打印错误之前显示在网页上。如果您在该内容之前移动setcookie()函数,则会修复错误。

答案 2 :(得分:0)

这可能是您所包含的文件或正在使用的任何其他文件的问题。

确保此类文件的末尾没有PHP结束标记?>(即,如果它们只执行逻辑,并且不输出任何HTML。

确保在任何文件上的开始标记<?php之前没有意外空格。

否则,请考虑使用ob_startob_get_cleanhttp://php.net/manual/en/function.ob-start.php

答案 3 :(得分:0)

通常,只要您的php文件中有大量空格或注释,或者您可能没有结束?> php tag,就会生成此问题。在打开<?php之前检查是否有空格。

除此之外,您还可以在php文件的开头使用ob_start

你可以帮助

http://php.net/manual/en/function.ob-start.php

相关问题