2013-02-27 182 views
0

我們的產品是電子書,通過http://www.tipsandtricks-hq.com/的eStore插件爲WordPress提供.epub和.mobi格式的電子書,可生成加密的下載鏈接。通過加密鏈接下載文件時損壞的文件

  • 問題突然開始大約5天前曾經工作罰款約三個月

  • 當客戶通過下載鏈接和Adobe Digital Editions的下載自己購買的所有.epub文件受到損壞時給出了一個錯誤嘗試導入該電子版的圖書館下載,然後裝上點燃時

  • 所有的.mobi文件受到損壞時,點燃給出類似的錯誤

  • 我們試圖關閉谷歌網址縮短服務,錯誤

  • 我們已經測試了IE,Chrome和Firefox的鏈接,錯誤

  • 我們測試不加密鏈接,通過經由直接鏈接下載文件他們做工精細的瀏覽器,沒有錯誤

我們學到的:

  • 我們已經測試使用FTP以ASCII和二進制模式下載...使用ASCII時,我們得到與使用加密下載鏈接相同的錯誤

  • 使用ASCII和Binary後,使用FTP傳輸的文件大小相同,但運行散列檢查顯示的內容是不同

  • 我們使用FileZilla中通過FTP來測試PC和Mac上,然而,錯誤只發生在PC上

  • 所以,我們假設這個問題有做文件傳輸類型和PC

  • in /home/foo/bar/wp-content/plugins/wp-cart-for-digital-products/download.php我們看到標題(「Content-Transfer-Encoding:binary」);因此,我們認爲使用加密鏈接

時能有可能是在迫使ASCII加密鏈路串一些字符二進制被強制?這裏是加密連接的例子:

https://fu.com/bar/download.php?file=LRtro6WQMN12ip%2BEcL0TYS8sMZmSKOlkRedVCZyfACsqSllzCAjDp%2FZJyfQ2oq0ZP6vg1EMrR%2FOFC4B3wGDHl3N0u0sulcBhIfkOJ0C0UQh6 

,這裏是看看http頭:

Status: HTTP/1.1 200 OK 
Date: Wed, 27 Feb 2013 14:55:47 GMT 
Server: Apache 
X-Powered-By: PHP/5.3.17 
Set-Cookie: PHPSESSID=7d61c9dd6ecbd321bea8cffg4a25d5e8; path=/ 
Expires: 0 
Cache-Control: public 
Pragma: public 
X-CF-Powered-By: WP 1.3.9 
Content-Description: File Transfer 
Content-Disposition: attachment; filename="Some-File-Name-Which-Was-Replaced.epub" 
Content-Transfer-Encoding: binary 
Content-Length: 5088032 
Connection: close 
Content-Type: application/epub+zip 

別的什麼可能會導致這?我們的服務器是否可以在.htaccess或apache配置設置中強制使用ASCII碼?

非常感謝您使用了錯誤的字符編碼在他的編輯

+0

我們只是試圖尋找損壞的文件VS用二進制編輯器的工作文件,發現裏面是損壞的文件的開頭垃圾數據。 (按照此技巧在這裏:http://stackoverflow.com/questions/4465135/php-file-download-is-always-corrupt-50-of-the-time) – 2013-02-27 21:20:38

+0

我們將二進制文件轉換爲ascii,發現垃圾該文件開頭處的數據爲:ï ° ¿ 哪些是HTML代碼: ?=倒置問號。 °=度數標誌。 ï=拉丁小寫字母i帶分音功能。 現在我們正試圖弄清楚這是從哪裏來的! :) 從eStore插件?從服務器?從Windows(因爲它只發生在Windows上)? – 2013-02-27 21:21:41

回答

0

我們的一個程序員了。我們需要治療與UTF-8(BOM關閉)或空格或換行符PHP文件可以在文件的完整性莫名其妙interefere:代碼

UTF-8 BOM signature in PHP files

問題的行中的WordPress'的functions.php:if ($bom != b"\xEF\xBB\xBF")

我們的罪魁禍首HTML字符代碼ï°¿,我們從十六進制值中解碼:EF BB BF 這是在損壞的.epub文件的開始時出現的垃圾數據。

functions.php每次運行WordPress時都會輸出這些垃圾數據。

很高興我們終於找到了問題的根源,讓我們生氣了!哈哈!!!

和平&編碼快樂給您的