2013-11-27 72 views
0

奇怪的問題。至少對於我來說。當點擊pdf.php的鏈接時,查詢會向mysql db寫入某個文檔被點擊的次數。php文件在瀏覽器中使用標題顯示pdf時運行兩次

的問題:除了在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); 

不容看到此刻的任何缺點。

+0

你實際上做了什麼以嘗試自己解決問題?這個信息可以幫助我們更好,更快地幫助你。 – SidOfc

+0

你在pdftrack表中有什麼主要的索引?大概你可以把它全部放到單個SQL語句中,使用ON DUPLICATE運算符。 –

+0

根據使用的PDF查看器,PDF可能實際上會被查詢兩次。你檢查過做一個TCP DUMP或簡單地檢查一些Web訪問日誌文件? – mkl

回答

0

此外,還有一個問題:Du hast eine falsche語法! Wenn du auf ein assoziatives Array zugreifst(in 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。

+0

您的意思是使用$ row ['id']而不是$ row [id],我同意這肯定是一種更好的風格,但它不是強制性的。 PHP對待它只是兩種方式,所以無論如何它不是這個錯誤的原因。 –

+0

之前未知。對於我來說,數組鍵必須被包裝在'或者'中,因爲沒有它將是一個常量。 – julesdude

+1

你是對的,它會變得更深)如果它被定義爲這樣一個名稱,它將是一個常量,否則它將被處理像一個字符串。 –

相關問題