【发布时间】:2009-06-12 18:29:04
【问题描述】:
我是PHP处女(第一天),所以请慢慢打字。
我有许多图像,bg_001.jpg、bg_002.jpg 等,我想在每次刷新页面时旋转它们。我试过这个:
if (isset($_COOKIE["bg1"])) {
$img_no = $_COOKIE["bg1"] + 1;
} else {
$img_no = 1;
}
$filename = 'bg_' . sprintf("%03d", $img_no) . '.jpg';
if (!file_exists("/img/" . $filename)) {
$img_no = 1;
$filename = 'bg_' . sprintf("%03d", $img_no) . '.jpg';
}
setcookie("bg1", $img_no, time() + 86400);
print '<img src="img/' . $filename . '" alt="" height="175" width="800"> ';
我得到一个 cookie 而不是
Warning: Cannot modify header information - headers already sent by (output
started at /home2/.../about.php:7) in /home2/.../about.php on line 31
第 31 行是带有 setcookie 的行。我已经找到了关于 PHP 在 Unicode 的 BOM 上遇到问题的指针,但我不知道如何解决它(如果它首先是这里的问题)。 所以,为了使它正式(并避免“不是一个真正的问题”标签),我该如何解决这个问题? :-)
也欢迎对我的代码提出建设性的批评。
结语:
看起来像一个常见的新手错误:十五分钟内对同一个解决方案的多个答案。谢谢guyz/galz。
所以我将除了 print 之外的所有内容都移到了文件的开头,并且确实:已修复。
【问题讨论】:
-
要添加到每个人的标题优先级答案中,我会告诉您检查该页面的第 7 行。这就是输出的罪魁祸首。
-
第 7 行?喜欢 ''??
-
坦率地说,我从没想过“7”会指代行号(尽管我不知道还有什么。错误/警告代码?)为什么他们会使用两种不同的方式来表示一行同一条消息中的数字? "...php:7" vs. "...php on line 31"