php httpclient 獲取cookie

今天第一天學習用php,是想在php中實現遠程登錄一個aspx的頁面,就是將php中登錄的用戶名密碼傳過去,直接讓aspx的界面登錄。aspx的界面也是我自己寫的,所以邏輯好控制。我是一個java程序員,C#和php對於我來說都是半路出家,對付着寫吧。


因爲java裏是由httpclient 現成的jar包的,所以百度php httpclient,果然找到一個。

下載的官方地址爲:http://scripts.incutio.com/httpclient/index.php

下載壓縮包,解壓後得到一個文件HttpClient.class.php。引入到工程中,寫個測試頁進行調用。官方的例子裏好多都是get的,咱要用post的方式獲取cookie,其實服務端是自己寫的,get的也行,但是原本計劃用post,就用post吧。


讀了一下HttpClient.class.php這個文件,雖然php的語法基本上一竅不通,但是猜測着來吧。


<span style="font-size:14px;">require_once ('HttpClient.class.php');
$params = array('name'=>'xxx','password'=>'123');
$client = new HttpClient('172.18.8.23','8888'); 
$client->setDebug(true);//打開debug模式
$path="/autologin.aspx";
if($client->post($path, $params)){  
  print_r($client->getHeaders());
  echo "<----------1----------->";
  print_r($client->getCookies());
   echo "<--------2------------>";
  print_r($client->getStatus());
   echo "<---------3----------->";
  print_r($client->getContent());
  echo "<---------4----------->";
}
else
	echo 'false';</span>


執行上面的頁面後,其他的都可以返回,,而且打印出的header中命名看到有cookie設置的,只是cookie的數組總是空,爲何?

再看了看HttpClient.class.php 的代碼,發現有如下語句



這個cookie_host,在整個文件中就沒地設置一個空串,所以數組取不值吧。刪除這個條件,在執行,可以成功得到cookie了。

再通過setcookie將獲取到的cookie設置進去,在訪問頁面就已經是自動登錄了。setcookie的時候別忘了設置domain和path。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章