使用标题在浏览器中显示pdf时,php文件运行两次

时间:2013-11-27 11:07:05

标签: php mysql pdf header double

奇怪的问题。至少对于我来说。单击pdf.php的链接时,查询会向mysql db写入单击某个文档的次数。

问题:不是每次点击都在数据库中写“1”,而是写“2”。似乎php文件运行了两次。但为什么呢?

$file = './'.mysqli_real_escape_string ($con,$_GET[name]).'';
$filename = mysqli_real_escape_string ($con,$_GET[name]); /* Note: Always use .pdf at the end. */
$id = intval($_GET[id]);
$date = time();
$what = mysqli_real_escape_string ($con,$_GET[name]);

header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
@readfile($file);


$sql = "SELECT id,what,person_id,count FROM pdftrack WHERE id = '".$id."' AND what='".$what."'";
$ergebnis = mysqli_query($con,$sql);
$row = mysqli_fetch_assoc($ergebnis);
if ($row[id] == '') 
    {
    $sql = "INSERT INTO pdftrack (id,what,date,count) VALUES ('".$id."', '".$what."','".$date."','1')";
    mysqli_query($con,$sql);//echo $sql;
    } 
else 
    {
    $count = $row[count]+1;
    $sql="UPDATE pdftrack 
    SET count='".$count."',
    date2='".$date."'
    WHERE id='".$row['id']."' 
    "; 
    mysqli_query($con,$sql);

    }

更新:感谢您的帮助,但仍然错了。如果标题部分消失了,它就像它应该的那样工作。所以我认为它与标题部分有关。有什么想法吗?

解决方案:仅使用

header('Content-type: application/pdf');
@readfile($file);

目前看不到任何不利因素。

1 个答案:

答案 0 :(得分:0)

另外,是mir dasofortauffällt:Du hast eine falsche Syntax! Wenn du auf ein assoziatives Array zugreifst(在deinem Fall $ row)dann musst du den Key auch als String deklarieren。 Sprich statt $ row [id] musst du $ row ['id'] verwenden。 Dieser Fehler ist z.B. bei deiner ersten if-Abfrage vorhanden。 Desweiteren bei else $ row [count] durch $ row ['count'] ersetzen。