当前位置: 代码迷 >> PHP >> 模拟post失败 为何
  详细解决方案

模拟post失败 为何

热度:437   发布时间:2016-04-28 22:39:37.0
模拟post失败 为什么?
本帖最后由 h420943302 于 2012-12-11 11:18:30 编辑
<form action="__URL__/test" method="post">
<tr>
<td width="90" align="right" height="26">被认证人姓名:</td>
<td style="text-align: left">
<input name="checkname" type="text" size="12" /><font color="#FF0000">*</font>(请填写中文字符)
</td></tr>
<tr>
<td width="90" align="right" height="26">身份证号:</td>
<td style="text-align: left">
<input name="checknum" type="text" size="16" /><font color="#FF0000">*</font>(15或18位数字)
</td></tr>
<tr>
<td width="90">&nbsp;</td>
<td>
<input type="submit" name="button01" value="确认身份信息认证" id="button01"  />
</td></tr></form>

$url='http://127.0.0.1/think_proj/review/index.php/Curl';
$cookie_id=' ECS[visit_times]=2;vvxU_2132_saltkey=oAOaIinB;vvxU_2132_lastvisit=1353993212; vvxU_2132_ulastactivity=1fcbqdoGt1V5Yt5eRaTVuz%2Bwjv1qvM09zYAqbDb4KL6RKzWORniM; lzstat_uv=11374893582414091332|923667; PHPSESSID=pcq1alboi8sq3r9n7d32du20m6';
$post_fields='checkname='.urlencode($name).'&checknum='.$num;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $cookie_id);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$contents = curl_exec($ch);
curl_close($ch);echo $contents;

为什么输出来的都是提交前的 画面,一直得不到post后的画面 我哪里写错了。。
------解决方案--------------------
// 模拟请求数据
Function Curl($url,$postfields,$referer='',$cookie_jar='./cookie.txt'){
$Cur = curl_init();
$Opt = Array(
CURLOPT_URL => $url,
CURLOPT_HEADER => 1,
CURLOPT_NOBODY => 1,
CURLOPT_PORT => 80, //端口
CURLOPT_POST => 1, //发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
CURLOPT_POSTFIELDS => $postfields,//要传送的所有数据,如果要传送一个文件,[email protected]
CURLOPT_RETURNTRANSFER => 1,// 获取的信息以文件流的形式返回,而不是直接输出。

CURLOPT_SSL_VERIFYHOST => 1,// 从证书中检查SSL加密算法是否存在
CURLOPT_SSL_VERIFYPEER => 0,// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
//CURLOPT_COOKIE => GetCook($url),

//CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",//模拟用户使用的浏览器,在HTTP请求中包含一个"user-agent"头的字符串。
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1',
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_COOKIEJAR => Dirname(__FILE__).$cookie_jar,
CURLOPT_COOKIEFILE => Dirname(__FILE__).$cookie_jar,
CURLOPT_REFERER => $referer,
);
curl_setopt_array($Cur,$Opt);
$code = curl_exec($Cur);
curl_close($Cur);
unSet($Cur);
Return $code;
}

Function GetCook($url) {
$Curl=curl_init($url);
curl_setopt($Curl,CURLOPT_HEADER,1);
curl_setopt($Curl,CURLOPT_RETURNTRANSFER,1);
$Cook=curl_exec($Curl);
curl_close($Curl);
$Out='';
preg_match("/ssid\=(.[^;]*)/i",$Cook,$Out);
Return $Out[1];
}

$url = "http://pcik.7di.net/pcik_in";
  相关解决方案