【发布时间】:2016-08-09 21:13:04
【问题描述】:
我正在尝试学习 php(全新),并且我正在尝试实现在这篇文章中发现的完全相同的东西,即使用 cookie 进行计数器和网站上的最后访问:
PHP cookie visit counter not working
但与该帖子中的用户不同,我遇到了这个臭名昭著的错误:
“这是您第一次使用服务器!警告:无法修改标头信息 - 标头已由(输出开始于第 17 行的 (...) 开始)
这是第 17 行:setcookie('visitCount1');
现在我意识到这很常见并搜索了SO并找到了这篇文章:
How to fix "Headers already sent" error in PHP
我彻底阅读并了解了为什么会发生这种情况的可能原因,包括空格和在任何 html 代码之前输入我的浏览器提到的注释 php 行以及删除结束标记“?>”和我作为很好地尝试将 ob_start() 放在我的代码开头,但仍然出现相同的错误结果。
这是我试图运行的代码(取自上面的帖子):
<?php
$Month = 3600 + time();
date_default_timezone_set('EST');
setcookie('AboutVisit1', date("D M j G:i:s T Y"), $Month);
?>
<?php
if(isset($_COOKIE['AboutVisit1']))
{
$last = $_COOKIE['AboutVisit1'];
echo "Welcome back! <br> You last visited on ". $last . "<br>";
}
if(isset($_COOKIE['visitCount1'])){
$cookie = ++$_COOKIE['visitCount1'];
echo ("You have viewed this page" . $cookie . "times.");
}
else
{
echo "It's your first time on the server!";
setcookie('visitCount1');
}
?>
我使用带有 wamp 服务器和 chrome 的 netbeans 8.1 作为我的浏览器。还有什么办法可以解决这个问题?
如果我只是在浏览器上或通过 netbeans 进行测试,是否真的可以查看 cookie 和会话记录?
我是否必须包含一个 html 标头和正文,或者我可以将它放在 php 正文中吗?
在 php fiddle 上它可以工作(有点),我得到了这个(总是同时):
欢迎回来! 您上次访问时间为 2016 年 8 月 9 日星期二 15:43:00 EST 这是你第一次上服务器!
【问题讨论】:
-
您发布的代码包含一个空格。看看
setcookie('AboutVisit1', date("D M j G:i:s T Y"), $Month);,然后看看你做了什么——你用?>关闭php,然后你有一个空白,然后你再次用<?php打开。
标签: php html cookies header counter