我想從我的PHP代碼中的遠程URL加載內容。有兩個限制:在PHP中的服務器上加載遠程數據
我需要使用專用服務器IP我有其他服務器的REMOTE_ADDR必須是我的專用IP。這消除了Curl,因爲Curl使用代理來加載遠程URL,代理更改不起作用的IP地址。
我需要使用PHP在我的後端加載數據。出於安全原因,我不希望使用Javascript。
除Curl外還有其他的解決方案嗎?
謝謝
我想從我的PHP代碼中的遠程URL加載內容。有兩個限制:在PHP中的服務器上加載遠程數據
我需要使用專用服務器IP我有其他服務器的REMOTE_ADDR必須是我的專用IP。這消除了Curl,因爲Curl使用代理來加載遠程URL,代理更改不起作用的IP地址。
我需要使用PHP在我的後端加載數據。出於安全原因,我不希望使用Javascript。
除Curl外還有其他的解決方案嗎?
謝謝
當使用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);
使用'bindto'屬性是解決此問題的關鍵。謝謝 – pppglowacki 2010-01-15 00:19:13
file_get_contents($url)
怎麼樣?請注意,有些網站需要用戶代理,因此在撥打電話之前,您必須先使用ini_set()
進行設置。
<?php
$homepage = file_get_contents('http://www.stackoverflow.com/');
echo $homepage;
?>
cURL使用代理嗎?這對於你的配置是獨一無二的嗎? – 2010-01-14 21:27:29
您好弗蘭克,託管服務提供商在他們的雲服務器上使用代理。所以當我打電話給cURL時,它會離開我的服務器,然後通過代理,然後到我想要的URL。 – pppglowacki 2010-01-14 21:34:41