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.dbjr.com.cn/";
$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.dbjr.com.cn/";
$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)文章
DOM基礎(chǔ)及php讀取xml內(nèi)容操作的方法
這篇文章主要介紹了DOM基礎(chǔ)及php讀取xml內(nèi)容操作的方法,實(shí)例分析了php對(duì)XML文件的增刪改查操作原理與技巧,需要的朋友可以參考下2015-01-01如何在舊的PHP系統(tǒng)中使用PHP 5.3之后的庫(kù)
這篇文章主要介紹了如何在舊的PHP系統(tǒng)中使用PHP 5.3之后的庫(kù),需要的朋友可以參考下2015-12-12淺談如何提高PHP代碼質(zhì)量之端到端集成測(cè)試
在本系列的前幾部分中,我們建立了一個(gè)構(gòu)建工具,一些靜態(tài)代碼分析器,并開(kāi)始編寫(xiě)單元測(cè)試。為了使我們的測(cè)試堆棧更完整,有一些測(cè)試可以檢查你的代碼是否在真實(shí)環(huán)境中運(yùn)行,以及它是否能在更復(fù)雜的業(yè)務(wù)場(chǎng)景中運(yùn)行良好。2021-05-05linux環(huán)境apache多端口配置虛擬主機(jī)的方法深入介紹
本篇文章是對(duì)linux環(huán)境apache多端口配置虛擬主機(jī)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06分析Composer實(shí)現(xiàn)自動(dòng)加載原理
一般在框架中都會(huì)用到composer工具, 用它來(lái)管理依賴。其中 composer有類的自動(dòng)加載機(jī)制,可以加載composer下載的庫(kù)中的所有的類文件。那么composer的自動(dòng)加載機(jī)制是怎么實(shí)現(xiàn)的呢?2021-05-05PHP 的異常處理、錯(cuò)誤的拋出及回調(diào)函數(shù)等面向?qū)ο蟮腻e(cuò)誤處理方法
PHP 5 提供了一種新的面向?qū)ο蟮腻e(cuò)誤處理方法,包括PHP 的異常處理、錯(cuò)誤的拋出及回調(diào)函數(shù)等面向?qū)ο蟮腻e(cuò)誤處理方法,需要了解更多的朋友可以參考下2012-12-12