欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

php 模拟提交表单

shiping1 的头像

php 模拟提交表单

 (2009-06-23 00:00:00)
标签: 

micecms

 

phptxt

 

cms

 

phpsqlite

 

it

分类: PHP
一 : PEAR::HTTP_Client模拟客户端POST
<?php
     set_time_limit(0);
      require_once 'HTTP/Client.php';
       $url = 'http://www.phpeye.com';
      //需要提交的变量,下面只是示例
     $vars = array(
      "UserName" => "haohappy",
      "Passwd"   => "hellowelcome",
      "action"   => "login"      
      );
     $client  =& new HTTP_Client();
     $client->post($url,$vars);
     $cookies = $client->_cookieManager->_cookies;  //这是获得Cookie
     $res = $client->currentResponse();  //抓取返回的页面    

     echo '<pre>';print_r($cookies);echo '</pre>';
     echo "<pre>";print_r($res);echo "</pre>";
?>

二:通过curl函数

$post_data = array();
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "submit";
$url='http://xxx.xxx.xxx.xx/xx/x...';
$o="";
foreach ($post_data as $k=>$v)
{
    $o.= "$k=".urlencode($v)."&";
}
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
//为了支持cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($ch);
 
三 : 通过fsockopen
$URL=‘http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "ログイン";
$referrer="";
// parsing the given URL
$URL_Info=parse_url($URL);
// Building referrer
if($referrer=="") // if not given use this script as referrer
$referrer=$_SERVER["SCRIPT_URI"];

// making string from $data
foreach($post_data as $key=>$value)
$values[]="$key=".urlencode($value);

$data_string=implode("&",$values);
// Find out which port is needed - if not given use standard (=80)
if(!isset($URL_Info["port"]))
$URL_Info["port"]=80;
// building POST-request:
$request.="POST ".$URL_Info["path"]." HTTP/1.1\n";
$request.="Host: ".$URL_Info["host"]."\n";
$request.="Referer: $referrer\n";
$request.="Content-type: application/x-www-form-urlencoded\n";
$request.="Content-length: ".strlen($data_string)."\n";
$request.="Connection: close\n";
$request.="\n";
$request.=$data_string."\n";
$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
fputs($fp, $request);
while(!feof($fp)) {
    $result .= fgets($fp, 128);
}
fclose($fp);

来自 http://blog.sina.com.cn/s/blog_5ed1dcc70100e480.html
普通分类: