Heim >Backend-Entwicklung >PHP-Tutorial > 模拟post失败 为何

模拟post失败 为何

WBOY
WBOYOriginal
2016-06-13 13:00:05997Durchsuche

模拟post失败 为什么?

本帖最后由 h420943302 于 2012-12-11 11:18:30 编辑
<form action="__URL__/test" method="post"><br />
<tr><br />
<td width="90" align="right" height="26">被认证人姓名:</td><br />
<td style="text-align: left"><br />
<input name="checkname" type="text" size="12" /><font color="#FF0000">*</font>(请填写中文字符)<br />
</td></tr><br />
<tr><br />
<td width="90" align="right" height="26">身份证号:</td><br />
<td style="text-align: left"><br />
<input name="checknum" type="text" size="16" /><font color="#FF0000">*</font>(15或18位数字)<br />
</td></tr><br />
<tr><br />
<td width="90"> </td><br />
<td><br />
<input type="submit" name="button01" value="确认身份信息认证" id="button01"  /><br />
</td></tr></form>

$url='http://127.0.0.1/think_proj/review/index.php/Curl';<br />
$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';<br />
$post_fields='checkname='.urlencode($name).'&checknum='.$num;<br />
$ch = curl_init($url);<br />
curl_setopt($ch, CURLOPT_POST, 1);<br />
curl_setopt($ch, CURLOPT_HEADER, 0);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt($ch, CURLOPT_COOKIE, $cookie_id);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);<br />
$contents = curl_exec($ch);<br />
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,//要传送的所有数据,如果要传送一个文件,需要一个@开头的文件名
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";
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn