2012-09-26 28 views
2

可能重複:
Getting around Chrome's Malicious File Warning保持/放棄谷歌瀏覽器PHP下載

代碼:

/* 
    .... Code to authenticate to my mysql and verify that we are an legal user. 
    */ 
    $type = mysql_result($AllResult, 0, 'file_type'); 
    $size = mysql_result($AllResult, 0, 'file_size'); 
    $name = mysql_result($AllResult, 0, 'file_name'); 
    $data = mysql_result($AllResult, 0, 'file_content'); 

    session_write_close(); 
    ob_clean(); 
    mysql_close(); 

    header("Content-Transfer-Encoding: binary"); 
    header("Content-type: $type"); 
    header("Content-length: $size"); 
    header("Content-Disposition: attachment;filename=$name"); 
    header("Content-Description: PHP Generated Data"); 
    echo "$data"; 

我做了一個PHP代碼從一個LONGBLOB下載文件我的數據庫並將其保存到用戶計算機。此代碼在Opera和Firefox上運行得非常完美。然而,在IE和谷歌Chrome - 如果程序是不是有一個微軟的SmartScreen許可證 - 這將PROMT對話「......名字......不常用下載,可能會損害您的計算機」

插圖:

How it looks without license

然而,我想知道我是否可以更改標題,或者如果可以獲取對話框「此文件可能會損害您的計算機。你想保留.....反正嗎?' [KEEP] [DISCARD]

什麼樣的對話我講的一個例證: Discard/Keep

更新:我試圖用同樣的結果

同時使用在線和依戀我的內容處置
+2

請不要使用'mysql_ *'函數編寫新代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。查看[*紅色框*](http://goo.gl/GPmFd)?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 –

回答

0

在從Chrome年底至少會有沒有辦法禁用此通知。您看到「此類文件可能會損害您的計算機」,因爲您的下載文件的擴展名是可執行文件(即.exe,.dll等)。微軟可能也是如此。我知道,微軟的系統將退出抱怨,如果該文件是「常用下載」(即他們看到很多人 下載同一文件)。如果有一個頭可以繞過這個通知,那麼對用戶來說就是不利的。

您可以通過確保您的下載名稱具有不可執行的擴展名(如.txt,.html等)來避免這種情況,因此通常不會被瀏覽器供應商視爲高優先級威脅。

+0

然而,感謝您的答案,通過直接引用文件'http://www.somewebsite/somefile.exe'它將改變抱怨保持/丟棄。有沒有更安全的方法來做到這一點,而不是直接接受文件? – dotTutorials

+0

我指的是該文件的名稱是一套在你的代碼的行頭中的標題(「內容處置:附件;文件名= $名稱」)。沒有必要直接引用任何文件。你現在正在爲腳本輸出設置$ name變量? –

+0

$ name變量是從數據庫加載的。它最初是從$ _FILES設置[「文件」] [「名稱」] – dotTutorials