2010-01-14 35 views
2

我想從我的PHP代碼中的遠程URL加載內容。有兩個限制:在PHP中的服務器上加載遠程數據

  1. 我需要使用專用服務器IP我有其他服務器的REMOTE_ADDR必須是我的專用IP。這消除了Curl,因爲Curl使用代理來加載遠程URL,代理更改不起作用的IP地址。

  2. 我需要使用PHP在我的後端加載數據。出於安全原因,我不希望使用Javascript。

除Curl外還有其他的解決方案嗎?

謝謝

+0

cURL使用代理嗎?這對於你的配置是獨一無二的嗎? – 2010-01-14 21:27:29

+0

您好弗蘭克,託管服務提供商在他們的雲服務器上使用代理。所以當我打電話給cURL時,它會離開我的服務器,然後通過代理,然後到我想要的URL。 – pppglowacki 2010-01-14 21:34:41

回答

1

當使用stream api和利用插座包裝可以設置bindto context parameter實現一個包裝(1):

用於指定的IP地址( IPv4或IPv6)和/或PHP將用於訪問網絡的端口號。語法是ip:port。將IP或端口設置爲0將讓系統選擇IP和/或端口。
$ctx = stream_context_create(array(
    'socket' => array(
    'bindto' => '192.168.0.107:0', 
    ) 
)); 

$c= file_get_contents('http://php.net', 0, $ctx); 
+0

使用'bindto'屬性是解決此問題的關鍵。謝謝 – pppglowacki 2010-01-15 00:19:13

1

你很可能fopen這一點。

+0

+1 Yup,並且如果fopen_url_wrappers未啓用,則始終存在較低級別的套接字函數。 – 2010-01-14 21:02:43

3

file_get_contents($url)怎麼樣?請注意,有些網站需要用戶代理,因此在撥打電話之前,您必須先使用ini_set()進行設置。

1

你試過file_get_contents

<?php 
$homepage = file_get_contents('http://www.stackoverflow.com/'); 
echo $homepage; 
?> 
相關問題