2010-06-10 24 views
0

我與此刻抓住圖像...奮力拼搶聽起來很傻,但是看看這個鏈接:P圖像的假Referer的

http://manga.justcarl.co.uk/A/Oishii_Kankei/31/1

如果你得到的圖像的URL,圖像負載。回過頭來看,它看起來可以正常工作,但這只是瀏覽器加載緩存的圖像。

應用程序工作正常,我認爲他們在他們的圖像上執行某種Referer檢查。所以我找到了一些代碼,並提出了以下...

$ref = 'http://www.thesite.com/'; 
$file = 'theimage.jpg'; 
$hdrs = array('http' => array(
'method' => "GET", 
'header'=> "accept-language: en\r\n" . 
    "Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*\/*;q=0.5\r\n" . 
    "Referer: $ref\r\n" . // Setting the http-referer 
    "Content-Type: image/jpeg\r\n" 
) 
); 
// get the requested page from the server 
// with our header as a request-header 
$context = stream_context_create($hdrs); 

$fp = fopen($imgChapterPath.$file, 'rb', false, $context); 
fpassthru($fp); 
fclose($fp); 

本質上它是彌補錯誤referrer。所有我回來,雖然是一堆胡言亂語(感謝fpassthru),所以我認爲它得到的形象,但我不敢說我​​不知道​​如何輸出/顯示收集的圖像。

回答

0

嘗試呼叫之前,調用該給fpassthru:

header('Content-Type: image/jpeg'); 

這會告訴你的瀏覽器,該數據將於明年是JPEG圖像。否則PHP會自動地說它是一個HTML文檔,這顯然是錯誤的。

注:記住要header所有呼叫必須由之前別的輸出到瀏覽器,這意味着你不能調用header之前有任何echoprint電話,開幕前,你不能有任何東西<?php標記。

+0

奇怪的是,它發送一個Referer與這種方法和圖像仍然加載。可悲的是我加載的HTML文件中的圖像,所以我不能使用這種方法,看起來更多的工作^^嘿,謝謝你的幫助 – 2010-06-10 17:29:50