-1

I'm making a simple download counter but I keep getting a header error as seen on - http://dev.kennyist.com/download.php?file=gvb

<?
error_reporting(-1);

$file= $_GET['file']; 
print $_GET['file'];    
$countf= 'download/' . $file . '.txt';    
print $countf;    
$count = file_exists($countf) ? file_get_contents($countf) : 0;    
file_put_contents($countf, ++$count);    
header("Location: http://dev.kennyist.com/download/[$file].zip");    
die();

?>

Output:

gvbdownload/gvb.txt

Warning: Cannot modify header information - headers already sent by (output started at /home/kennyi81/public_html/dev/download.php:1) in /home/kennyi81/public_html/dev/download.php on line 17

4

3 回答 3

2

print在修改标头之前使用回显信息。你不能这样做。只需注释掉或删除这两print行,它应该可以工作。

于 2013-05-01T19:11:56.290 回答
0

完全正确......你不能print在标题之前......你不能打印任何东西(不是回声,不是var_dump)

在这里检查:http: //us.php.net/manual/en/function.header.php

请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是从 PHP 发送。使用 include 或 require 函数或其他文件访问函数读取代码并在调用 header() 之前输出空格或空行是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。

于 2013-05-01T19:16:46.980 回答
0

如果你不能或者你不想改变你的代码,你可以使用ob_start(); 在代码的开头。

于 2013-05-01T19:32:48.273 回答