setCookie()即使遵循php.net上的规则,也总是会失败“已发送”
题
代码的相关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 字符,您必须使用编辑器保存对话框或另一个编辑器重新保存文件。
始终读取整个错误消息。这不仅说什么出了问题,而且经常解释,肯定发生了什么。
不隶属于 StackOverflow