setCookie()即使遵循php.net上的规则,也总是会失败“已发送”

StackOverflow https://stackoverflow.com/questions/3544907

  •  30-09-2019
  •  | 
  •  

代码的相关PEICE如下。根据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 );
有帮助吗?

解决方案

需要 根本没有输出 打电话之前 setcookie, ,甚至来自其他脚本。

如果 config.php 开放前有空格 <?php 标签(或关闭后 ?>),例如,这将导致问题。

追捕哪里 header 被称为PHP标签(甚至空格)之外的某些文本。毫无疑问,这就是发生的事情。

其他提示

一些文本编辑器没有显示所有符号。请尝试打开您的main.php和config.php un不同的编辑器,然后检查一下 vim 或者 vi. 。另外,完整的错误消息告诉您确切的错误开始。

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

如果说输出开始于main.php:0-这很可能是 bom 字符,您必须使用编辑器保存对话框或另一个编辑器重新保存文件。

始终读取整个错误消息。这不仅说什么出了问题,而且经常解释,肯定发生了什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top