2013-03-21 63 views
2

我已經有了www.aaa.com/file.php讓PHP的file_get_contents

一些文件中引用者我已經有了www.saveme.com/file2.php

而這第二個一個我稱之爲一日一這樣file_get_contents('www.aaa.com/file.php');

我想裏面另一個文件www.aaa.com/file.php以獲取調用它的網站的網址。

可能嗎?

www.lol.com電話www.aaa.com/file.php - >它得到www.lol.pl

www.another.com稱之爲 - >它得到www.another.com

東西像 '誰已經從另一臺服務器給我打電話,什麼服務器是什麼呢?'

回答

0

您需要將引用作爲參數傳遞給file_get_contents

file_get_contents('http://www.aaa.com/file.php?referrer='.urlencode($referrer)); 

這是不可能的第二個服務器來獲得原始引用除外。

+0

我無法通過它。好,謝謝。我的意思是,你確定嗎? :) – OPOPO 2013-03-21 12:31:33

+0

是的,因爲file_get_contents啓動一個新的HTTP會話,它不能繼承原始的引用。 – 2013-03-21 12:41:03

+0

此代碼不能用作一般解決方案。 (此代碼僅在您可以控制源URL和目標URL時纔有效。)JeromeJ提供的解決方案適用於所有情況。如果引薦者與網站的域名不同,我需要確定一個網站是否允許您訪問那裏的圖片。 JeromeJ的代碼使我能夠做到這一點。 – 2015-07-17 09:56:31

-1

請參閱http://php.net/manual/en/function.file-get-contents.php您將瞭解有關get_headers()和$ http_response_header的信息。

+2

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/19054373) – Mayur 2018-03-09 08:11:36

6

事實上,不,因爲它不如Payalytic上尉說的那樣明顯,所以這裏是如何去做的。

$referer = "http://abc.info"; 
$opts = array(
     'http'=>array(
      'header'=>array("Referer: $referer\r\n") 
     ) 
); 
$context = stream_context_create($opts); 
file_put_contents($img, file_get_contents($node_img, false, $context)); 

來源:http://thuannvn.blogspot.be/2011/12/how-to-set-referer-in-php.html

越來越頭痛的官方文檔,不發一言約參照網址之後,我終於做到了網絡上的經典搜索,馬上發現這一點。萬歲!

編輯:該文檔說header應該是一個字符串,雖然(http://be2.php.net/manual/en/context.http.php)。我們應該檢查它是否也適用於數組。

另外,您還應該能夠從收到的請求的IP中檢索域的名稱。 (並非總是如此)

您也可以使用curl

+1

響應您的編輯:標題既可以作爲數組,也可以作爲字符串使用。 (我測試了兩種方式。) 作爲一個字符串,你可以輸入''header'=>「Referer:$ referer \ r \ n」'這比你的數組代碼略短。 – 2015-07-17 10:10:09