2011-06-02 60 views
1

我有一個網站託管圖像直接共享和鏈接。我在某處讀過這是一個糟糕的主意。我怎麼能應用簡單的間接方法,同時可能會保留現有的鏈接一段時間,直到他們消失在Facebook之外?簡單的間接方法鏈接到圖像

+0

編輯該問題,因爲它顯然不清楚。 – 2011-06-02 18:25:50

回答

2

老答案在下面。

實例製作,你不能直接鏈接到鏈接:

$expire = 60 * 5; // 5 minutes; 
$time = $_SERVER['REQUEST_TIME'] + $expire; 
$image_id = $image_id; 
$secretpassword = "secretpassword"; 

function generate_link($image_id, $time, $secretpassword) { 
    $hash = md5($secretpassword . $time . $image_id); 
    return "image.php?" . http_build_query(array(
     'image_id' => $image_id, 
     'time' => $time, 
     'hash' => $hash, 
    )); 
} 

function is_link_valid($image_id, $time, $hash, $secretpassword) { 
    if ($hash !== md5($secretpassword . $time . $image_id)) { 
     return false; // hash is invalid 
    } 
    if ($time < $_SERVER['REQUEST_TIME']) { 
     return false; // link has expired 
    } 
} 

使用像:

generate_link($image_id, $time, $secretpassword); 
is_link_valid($_GET['image_id'], $_GET['time'], $hash, $secretpassword); 

你把在鏈接兩位信息您生成:圖像ID和鏈接應該到期的時間(所以你不能直接鏈接)。此外,您還添加了一個散列,以便沒有人可以「混淆」這些變量,只有您知道如何生成散列(取決於$secretpassword)。

這些鏈接在5分鐘後過期,或者任何你設置的$expire

一個問題是這些鏈接看起來不太漂亮。我知道如何讓它們看起來更漂亮,但這超出了這個問題的範圍。


老答案

我假設你的意思是你分享那些在其他領域(如Facebook)的圖像。

您描述的問題是您通過使用圖像(和帶寬)從其他域「偷走」。我不知道Facebook的直接鏈接政策,但對於較少的網站這是一個真正的負擔。添加間接性不會解決這個問題。

解決這個問題的唯一方法是將圖像上傳到圖像服務器,無論是自由還是自由控制。你可以讓你的用戶這樣做,或者你可以爲他們做。 如果您不控制圖像服務器,但自動化它很困難,但是擁有圖像服務器的成本非常高(帶寬昂貴)。有用戶這樣做會給他們帶來負擔,並且可能會讓你的網站變得不那麼有吸引力,因爲他們需要執行額外的步驟。

我認爲這些都是您的選擇。

+0

這些圖像直接來自我正在處理的網站(例如成員的照片)。直接訪問圖像的一個問題是,任何人都可以鏈接到它們,一旦他們已經擴散。如果某個地方存在「中間人」,這可以避免。儘管如此,吸血仍然是個問題。 – 2011-06-02 18:25:02

+0

啊,在這種情況下,你可以製作幾乎不可能猜到的鏈接。我會舉一個例子。 – Halcyon 2011-06-03 20:12:52

相關問題