0

相关的代码如下。根据 php.net,我必须确保没有输出,甚至没有任何空格。没有。php 标签是文档中的第一个标签,它前面没有空格。我究竟做错了什么?

<?php

    // main.php
    // 6:48 PM 8/6/2010

    include('config.php');

    // Does myid cookie exist?
    if ( !isset( $_COOKIE['myid'] ) )
    {
        // Generate myid
        $myid = substr(md5(date( 'Ymdhis' ) . str_replace( '.', '', $_SERVER['REMOTE_ADDR'] ) ), 0, 10);

        // set the cookie
        setcookie( 'myid', $myid, time() + 31536000 );
4

3 回答 3

0

在调用 之前根本不需要输出setcookie,即使来自其他脚本也是如此。

例如,如果在开始标记之前(或在结束标记之后)config.php有空格,则会导致问题。<?php?>

寻找在哪里header被调用或 PHP 标记之外的一些文本(甚至是空格)存在。这就是正在发生的事情,毫无疑问。

于 2010-08-23T05:20:59.687 回答
0

一些文本编辑器不会显示所有符号。请尝试在不同的编辑器中打开您的 main.php 和 config.php 并检查两个文件中 <?php 之前的内容。我不知道 Windows,但在 Linux 上你可以使用vimor vi。此外,完整的错误消息会告诉您错误的确切开始位置。

于 2010-08-23T05:21:44.063 回答
0

您无法阅读或至少无法在此处粘贴此错误消息。它有详细的解释,你在做什么错。
很可能会说输出从 config.php:XXX 开始。很清楚。

如果它说输出从 main.php:0 开始 - 这很可能是一个BOM字符,你必须在没有它的情况下重新保存你的文件,使用你的编辑器保存对话框或其他编辑器。

Always read entire error message. It is not only says what something went wrong, but often explains, what certainly happened.

于 2010-08-23T05:24:15.390 回答