PHP下通過(guò)file_get_contents的代理使用方法
更新時(shí)間:2011年02月16日 22:33:31 作者:
PHP下通過(guò)file_get_contents的代理使用方法
PHP使用file_get_contents的代理方法獲取遠(yuǎn)程網(wǎng)頁(yè)的代碼。
<?php
$url = "http://www.dhdzp.com/";
$ctx = stream_context_create(array(
'http' => array('timeout' => 5,
'proxy' => 'tcp://60.175.203.243:8080',
'request_fulluri' => True,)
)
);
$result = file_get_contents($url, False, $ctx);
echo $result;
?>
另外一種 curl 的方式使用代理的方法:
function postPage($url)
{
$response = "";
$rd=rand(1,4);
$proxy='http://221.214.27.253:808';
if($rd==2) $proxy='http://222.77.14.56:8088';
if($rd==3) $proxy='http://202.98.123.126:8080';
if($rd==4) $proxy='http://60.14.97.38:8080';
if($url != "") {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
$response = curl_exec($ch);
if(curl_errno($ch)) $response = "";
curl_close($ch);
}
return $response;
}
用file_get_contents解決ajax垮域問(wèn)題
在ajax運(yùn)用中有時(shí)候會(huì)垮域調(diào)用文件,而瀏覽器為了安全會(huì)默認(rèn)給這種操作提出警告,甚至直接阻止。如果是IE會(huì)彈出一個(gè)警告窗口,詢問(wèn)你是否繼續(xù)操作,只有你同意了IE才會(huì)調(diào)用垮域的文件。而其它瀏覽器,如火狐、Opera默認(rèn)設(shè)置下則會(huì)直接提示錯(cuò)誤,阻止調(diào)用外域文件。這會(huì)給用戶不好的操作體驗(yàn),如果想通過(guò)用戶修改瀏覽器的安全設(shè)置來(lái)解決這個(gè)問(wèn)題是不現(xiàn)實(shí)的,最好是在服務(wù)器端解決。
在服務(wù)器端可以使用一個(gè)同域的文件做為代理文件,這個(gè)代理文件將獲得外域文件的內(nèi)容,然后再傳遞給ajax。這樣ajax就不是調(diào)用外域文件,而是調(diào)用同域的這個(gè)代理文件,安全問(wèn)題也就解決了。
如果你的服務(wù)器端支持PHP的話,可以使用file_get_contents這個(gè)函數(shù),看到它的名稱就已經(jīng)知道它有獲得其它文件內(nèi)容的功能了。它的詳細(xì)用法可以參看PHP官方網(wǎng)站上的file_get_contents用法一頁(yè),下面是它的簡(jiǎn)單實(shí)例。
<?php
$serverAddress = 'http://s.jb51.net';
//獲得外域文件內(nèi)容
$randomNumber = file_get_contents($serverAddress);
//輸出內(nèi)容
echo $randomNumber;
?>
復(fù)制代碼 代碼如下:
<?php
$url = "http://www.dhdzp.com/";
$ctx = stream_context_create(array(
'http' => array('timeout' => 5,
'proxy' => 'tcp://60.175.203.243:8080',
'request_fulluri' => True,)
)
);
$result = file_get_contents($url, False, $ctx);
echo $result;
?>
另外一種 curl 的方式使用代理的方法:
復(fù)制代碼 代碼如下:
function postPage($url)
{
$response = "";
$rd=rand(1,4);
$proxy='http://221.214.27.253:808';
if($rd==2) $proxy='http://222.77.14.56:8088';
if($rd==3) $proxy='http://202.98.123.126:8080';
if($rd==4) $proxy='http://60.14.97.38:8080';
if($url != "") {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
$response = curl_exec($ch);
if(curl_errno($ch)) $response = "";
curl_close($ch);
}
return $response;
}
用file_get_contents解決ajax垮域問(wèn)題
在ajax運(yùn)用中有時(shí)候會(huì)垮域調(diào)用文件,而瀏覽器為了安全會(huì)默認(rèn)給這種操作提出警告,甚至直接阻止。如果是IE會(huì)彈出一個(gè)警告窗口,詢問(wèn)你是否繼續(xù)操作,只有你同意了IE才會(huì)調(diào)用垮域的文件。而其它瀏覽器,如火狐、Opera默認(rèn)設(shè)置下則會(huì)直接提示錯(cuò)誤,阻止調(diào)用外域文件。這會(huì)給用戶不好的操作體驗(yàn),如果想通過(guò)用戶修改瀏覽器的安全設(shè)置來(lái)解決這個(gè)問(wèn)題是不現(xiàn)實(shí)的,最好是在服務(wù)器端解決。
在服務(wù)器端可以使用一個(gè)同域的文件做為代理文件,這個(gè)代理文件將獲得外域文件的內(nèi)容,然后再傳遞給ajax。這樣ajax就不是調(diào)用外域文件,而是調(diào)用同域的這個(gè)代理文件,安全問(wèn)題也就解決了。
如果你的服務(wù)器端支持PHP的話,可以使用file_get_contents這個(gè)函數(shù),看到它的名稱就已經(jīng)知道它有獲得其它文件內(nèi)容的功能了。它的詳細(xì)用法可以參看PHP官方網(wǎng)站上的file_get_contents用法一頁(yè),下面是它的簡(jiǎn)單實(shí)例。
復(fù)制代碼 代碼如下:
<?php
$serverAddress = 'http://s.jb51.net';
//獲得外域文件內(nèi)容
$randomNumber = file_get_contents($serverAddress);
//輸出內(nèi)容
echo $randomNumber;
?>
您可能感興趣的文章:
- PHP CURL或file_get_contents獲取網(wǎng)頁(yè)標(biāo)題的代碼及兩者效率的穩(wěn)定性問(wèn)題
- php中file_get_contents與curl性能比較分析
- php采用file_get_contents代替使用curl實(shí)例
- php中使用Curl、socket、file_get_contents三種方法POST提交數(shù)據(jù)
- PHP中file_get_contents高級(jí)用法實(shí)例
- PHP file_get_contents 函數(shù)超時(shí)的幾種解決方法
- PHP file_get_contents設(shè)置超時(shí)處理方法
- PHP中使用cURL實(shí)現(xiàn)Get和Post請(qǐng)求的方法
- PHP CURL CURLOPT參數(shù)說(shuō)明(curl_setopt)
- php基于curl重寫(xiě)file_get_contents函數(shù)實(shí)例
相關(guān)文章
關(guān)于PHP自動(dòng)判斷字符集并轉(zhuǎn)碼的詳解
本篇文章是對(duì)PHP自動(dòng)判斷字符集并轉(zhuǎn)碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
講解WordPress開(kāi)發(fā)中一些常用的debug技巧
這篇文章主要介紹了WordPress開(kāi)發(fā)中一些常用的debug技巧,需要的朋友可以參考下2015-12-12
php利用cookie實(shí)現(xiàn)自動(dòng)登錄的方法
這篇文章主要介紹了php利用cookie實(shí)現(xiàn)自動(dòng)登錄的方法,涉及針對(duì)cookie的讀取判斷及登陸操作,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
PHP實(shí)現(xiàn)的Redis多庫(kù)選擇功能單例類
這篇文章主要介紹了PHP實(shí)現(xiàn)的Redis多庫(kù)選擇功能單例類,結(jié)合實(shí)例形式分析了php采用單例模式實(shí)現(xiàn)redis數(shù)據(jù)庫(kù)的多庫(kù)選擇功能,需要的朋友可以參考下2017-07-07
php中如何判斷一個(gè)網(wǎng)頁(yè)請(qǐng)求是ajax請(qǐng)求還是普通請(qǐng)求
以下是對(duì)php中如何判斷一個(gè)網(wǎng)頁(yè)請(qǐng)求是ajax請(qǐng)求還是普通請(qǐng)求的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08
PHP正則表達(dá)式匹配替換與分割功能實(shí)例淺析
這篇文章主要介紹了PHP正則表達(dá)式匹配替換與分割功能,簡(jiǎn)單分析了php正則匹配、替換與分割相關(guān)函數(shù),并結(jié)合實(shí)例形式演示了php正則匹配的相關(guān)操作技巧,需要的朋友可以參考下2017-02-02
PHP導(dǎo)出MySQL數(shù)據(jù)到Excel文件(fputcsv)
經(jīng)常會(huì)碰到需要從數(shù)據(jù)庫(kù)中導(dǎo)出數(shù)據(jù)到Excel文件,用一些開(kāi)源的類庫(kù),比如PHPExcel,確實(shí)比較容易實(shí)現(xiàn),但對(duì)大量數(shù)據(jù)的支持很不好,很容易到達(dá)PHP內(nèi)存使用上限。2011-07-07

