程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php實戰第十五天

php實戰第十五天

編輯:關於PHP編程

今天再次學習 curl

 


PHP 提供了curl_*的系列函數來進行操作curl。

常用的有以下幾個:
 Curl_init 初始化一個curl 會話
 Curl_close 這個當然是關閉咯- -!
 Curl_error 返回當前會話的錯誤信息
 Curl_errno 錯誤編號
 Curl_setopt 設置一個選項,這個函數很重要
 Curl_setopt_array 這個和上面的curl_setopt 一樣,不同的是這個一次可以設置多個選項
 Curl_exec 執行curl 會話

這幾個算比較常用的了,其他的函數如果要用自己Google。

下面我們來模擬GET 請求:

 

[php]
$ch = curl_init();//這裡初始化了一個會話  
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//設置了一個遇$ch 會話相關的地址 
curl_exec($ch);//執行會話  
curl_close($ch);//關閉會話 

$ch = curl_init();//這裡初始化了一個會話
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//設置了一個遇$ch 會話相關的地址
curl_exec($ch);//執行會話
curl_close($ch);//關閉會話
浏覽一下,google 的首頁內容就輸出在浏覽器上了。
如果你問那我不要他輸出,而是返回呢?
那麼加個選項就行了。


[php]
$ch = curl_init();//這裡初始化了一個會話  
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//設置了一個遇$ch 會話相關的地址 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//這裡告訴curl 我不要輸出我要返回  
$data = curl_exec($ch);//那麼在執行的時候curl 就會返回給你了。哈哈,太聽話了..  
curl_close($ch); //關閉會話 

$ch = curl_init();//這裡初始化了一個會話
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//設置了一個遇$ch 會話相關的地址
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//這裡告訴curl 我不要輸出我要返回
$data = curl_exec($ch);//那麼在執行的時候curl 就會返回給你了。哈哈,太聽話了..
curl_close($ch); //關閉會話上面是模擬GET 請求,那麼下面來模擬POST 的:
[php] view plaincopyprint?//這裡用了我自己的程序來做實驗.. - -!  
$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//POST 到的地址 
$query = 'name=xiaokai&password=xiaokai';//這個是提交的數據  
$ch = curl_init($url);//初始化的時候就關聯一個url 地址  
curl_setopt($ch, CURLOPT_POST, true);//這裡告訴他我要用post 方式  
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//給他post 的數據  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//我不要輸出要返回  
$data = curl_exec($ch);//OK,執行後返回給你了。  
curl_close($ch);//關閉  
echo $data;//輸出結果,提示登錄成功了。 

//這裡用了我自己的程序來做實驗.. - -!
$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//POST 到的地址
$query = 'name=xiaokai&password=xiaokai';//這個是提交的數據
$ch = curl_init($url);//初始化的時候就關聯一個url 地址
curl_setopt($ch, CURLOPT_POST, true);//這裡告訴他我要用post 方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//給他post 的數據
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//我不要輸出要返回
$data = curl_exec($ch);//OK,執行後返回給你了。
curl_close($ch);//關閉
echo $data;//輸出結果,提示登錄成功了。
自己寫次代碼,不要copy,因為copy 你永遠也學不會。
上面代碼執行後會提示登錄成功,那已經登錄成功了。
但是有個問題,這樣登錄沒有保存刷新次登錄就失效了,這個問題就和你的浏覽器沒開cookie 是
一樣的。那麼下面我們來給curl 開cookie。

 

[php]
$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//POST 到的地址 
$query = 'name=xiaokai&password=xiaokai';//這個是提交的數據  
$jar = realpath('cookie.txt');//cookie 保存的地址  
$ch = curl_init($url);//初始化的時候就關聯一個url 地址  
curl_setopt($ch, CURLOPT_POST, true);//這裡告訴他我要用post 方式  
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//給他post 的數據  
curl_setopt($ch, CURLOPT_COOKIEJAR, $jar);//這裡給他cookie 文件保存的地址,然後就會自動將cookie  
內容寫入到cookie 文件中了。 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//我不要輸出要返回  
$data = curl_exec($ch);//OK,執行後返回給你了  
curl_close($ch);//關閉  
echo $data;//輸出結果,提示登錄成功了。 

$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//POST 到的地址
$query = 'name=xiaokai&password=xiaokai';//這個是提交的數據
$jar = realpath('cookie.txt');//cookie 保存的地址
$ch = curl_init($url);//初始化的時候就關聯一個url 地址
curl_setopt($ch, CURLOPT_POST, true);//這裡告訴他我要用post 方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//給他post 的數據
curl_setopt($ch, CURLOPT_COOKIEJAR, $jar);//這裡給他cookie 文件保存的地址,然後就會自動將cookie
內容寫入到cookie 文件中了。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//我不要輸出要返回
$data = curl_exec($ch);//OK,執行後返回給你了
curl_close($ch);//關閉
echo $data;//輸出結果,提示登錄成功了。
好了, 就加了個CURLOPT_COOKIEJAR 選項就OK 了, 是不是很簡單。注意這裡的
CURLOPT_COOKIEJAR 的值必須是絕對路徑,也就是說你指定的cookie 文件保存路徑必須是絕對路徑。


[php]
$url = 'http://www.phpfamily.cn/Shop/register'; 
$jar = realpath('cookie.txt');//cookie 保存的地址  
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $jar);//這裡指定cookie 文件保存的路徑  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$data = curl_exec($ch); 
curl_close($ch);//關閉  
echo $data; 

$url = 'http://www.phpfamily.cn/Shop/register';
$jar = realpath('cookie.txt');//cookie 保存的地址
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $jar);//這裡指定cookie 文件保存的路徑
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);//關閉
echo $data;
繼續, 上面保存了cookie 那麼再次模擬登錄的時候就不用POST 了, 加個選項
CURLOPT_COOKIEFILE 就可以直接登錄了。
再次預覽,會提示你已經登錄過了。這樣登錄後就保存cookie 然後就可以干任何事了,比如提交
評論、留言、等等。

 

 

 

  

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved