-1

I've read 4 or 5 different threads about this so far, but after trying the suggestions, I can't figure this out.

I'm just trying to set a cookie, but on 3 of 5 pages the "Cannot modify" error is showing up. My page still loads though.

This code is in an include on all pages, and it loads before the html on all pages. (it's included in my header.php file, which is on all pages.)

<?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
 */
?>

My Header.php file (just the first few lines)

<?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">

Both my database and html are UTF-8.

4

4 回答 4

2

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

其他有用的提示是?>从任何只包含代码的 PHP 文件中删除尾标。这是不必要的,它为难以检测到的空白打开了大门。

打开错误报告后,错误应该可以非常清楚地指示导致标头调用失败的输出开始的位置,因此我建议启动错误报告以查看真正的问题所在的位置。

于 2013-09-14T06:14:12.867 回答
1

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

于 2013-09-14T06:03:58.427 回答
0

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

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

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

否则,考虑使用ob_startand ob_get_clean: http: //php.net/manual/en/function.ob-start.php

于 2013-09-14T06:04:45.447 回答
0

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

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

你可以帮助

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

于 2013-09-14T06:09:38.597 回答