1.通过curl函数
$post_data = array(); $post_data['clientname'] = "test08"; $post_data['clientpasswd'] = "test08"; $post_data['submit'] = "submit"; $url='http://xxx.xxx.xxx.xx/xx/xxx/top.php'; $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);
2.通过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);
Snoopy 类(2)
sourceforge.net/projects/snoopy/
http://www.redalt.com/xref/trunk/nav.htm?wp-includes/class-snoopy.php.htm
HTTP类(1,2)
http://www.phpclasses.org/browse/download/1/file/5/name/http.php
PEAR HTTP_Request
http://pear.php.net/package/HTTP_Request
《 “php 模拟POST提交的2种方法” 》 有 14 条评论
你好,我想用你这个方法模拟post 把数据post到paypal上面以进行付款,但这个方法好像没有使页面跳转到paypal上,也没有把数据传递过去,希望指教,谢谢!
paypal有自己专用的一套东西啊。这个是服务器端的,你要用的是客户端的。
[…] 在网上搜了一下,基本上两种方法:(转自网友文章) […]
body—body
very helpful .Thx .The happy family
aaa
这个只是post,要登录的状态,要支持cookie。
可以参考这个
http://www.juyimeng.com/python-simulate-login-with-post-and-examine-the-result.html
我把登录数据提交过去了,网站跳页,我怎么记录他的在线信息
post_data需要如下数据,你都填写了么?post的目标url也对么?
autologin on
login
password test121121
redirect eula.php
username test121121
就是完全沒有報錯..
所以才麻煩..根本不知道從何下手 ^^”
为什么?有报错?有什么输出?
你好…我看到了你那頁用php去模擬form送值的文章..
我使用了裡面的程式碼去讀取大部分的網站驗證都行..
不過目前有一個網站..
http://w5.web3go.com.tw 就沒辦法了..
可以請教一下這要如何用curl去模擬呢?
謝謝..
没问题的,你的程序怎么写的?有抱错么?你什么平台,有装curl么?
你好,请问下第一种方法执行之后会直接返回post之后的网页么?我试了下,好像没有反映,郁闷。