2016-09-20 62 views
0

我目前正在開發一個獨立的幻燈片應用程序,它顯示CSS動畫圖像以及音樂。加載圖像和隨機歌曲

到目前爲止,圖像和音樂只是從他們的真實位置直接加載 - 這意味着該位置和文件必須完全訪問公衆,任何人都可以直接打開圖像和歌曲,而無需使用我的應用程序。這對於原型設計和發佈來說沒什麼問題 - 但現在需要更多的進步保護來防止盜竊。

不要誤解我的意思:我知道,沒有真正的保護。我只是想讓人們很難直接下載。應該沒有辦法直接鏈接到媒體文件。

這裏是我想出了:

  • 圖片和歌曲通過PHP加載 - 您指定的id作爲參數,PHP查找的位置,並提供文件,如果找到。此外,只有當作爲參數提供的隨機數有效(存在且不超過30秒)時纔會提供文件。該隨機數由PHP生成並存儲在$_SESSION['nonce']變量中。

    <img src="image/imageid?nonce=[[nonce]]">
    <audio><source src="song/songid?nonce=[[nonce]]"></audio>

  • 在我的應用程序,我有三個功能:

    • (string) generateNone()生成,會話的保存並返回一個隨機數值 - >標記中用來產生鏈接
    • (bool) validateNonce()用於檢查一個隨機數是否有效並在之後刪除,因此它不能被重用
    • (void) initNonces()用於從會話中刪除所有臨時值。每次應用程序加載時都會調用此函數(當然,不包括圖像和歌曲服務)以防止未使用的隨機數累積。

問題:

理論上,這整個想法的作品。實際上,我遇到兩個問題,我不能解決:

  1. 圖像似乎通過瀏覽器重新加載:當圖像被使用jQuery/JavaScript的改變(例如「隱藏圖像1,顯示圖像2」或「隱藏圖像4,顯示圖像5「),由於nonce不再有效(=已被使用一次),圖像無法加載。驗證後停止nonce刪除(= nonce可重複使用)解決了這個問題,但這不是真正的解決方案。這個問題可能與問題2有關,因爲jQuery只改變CSS屬性來顯示和隱藏圖像。

  2. 圖片和歌曲現時壽命後裝:瀏覽器似乎加載最初由CSS隱藏只有當圖像變得可見的圖像。雖然這對減少帶寬使用通常是有幫助的,但在我的情況下,它會阻止在30秒的隨機生存期後加載圖像和歌曲。我需要一種方法讓瀏覽器直接加載所有內容,或者至少在30秒內打開並連接所需的圖像/歌曲。

問題:

這是很辛苦,所以我希望有人誰知道如何瀏覽器內部的工藝介質加載可以給我就如何解決所描述的問題進行提示,以確定真正的問題。如果您需要任何代碼,請讓我知道。

回答

0

我詢問,後來回答只有幾分鐘的遺憾 - 但我找到了解決辦法尋找了幾個小時之後,我認爲這可能是人誰一起類似的問題來幫助:

我使用jQuery clone()/remove()重新啓動圖像的CSS動畫。我不知道的是,它不僅複製了元素,還重新加載了其中的所有媒體,就像它在原始HTML標記中一樣。所以圖像被重新加載 - 導致問題,因爲nonce已被使用。