仓酷云

标题: PHP编程:php curl摹拟post哀求提交数据 [打印本页]

作者: 透明    时间: 2015-1-16 22:11
标题: PHP编程:php curl摹拟post哀求提交数据
可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。 比来在做校园藏书楼图手札息的收罗程序,既然是藏书楼图书的收罗,一定有提交搜刮的页面,不过是post提交,让我想到了curl摹拟提交,起首经由过程firebug举行抓包查询下post提交后的格局以下:txtWxlx=CN&hidWxlx=spanCNLx&txtPY=HZ&txtTm=%D2%F4%C0%D6&txtLx=%25&txtSearchType=1&nMaxCount=100&nSetPageSize=10&cSortFld=%D5%FD%CC%E2%C3%FB&B1=%BC%EC+%CB%F7;搜刮的关头字name=txtTm,随儿女码以下:复制代码<?php$keyword="音乐";$post="txtWxlx=CN&hidWxlx=spanCNLx&txtPY=HZ&txtTm={$keyword}&txtLx=%25&txtSearchType=1&nMaxCount=100&nSetPageSize=20&cSortFld=%D5%FD%CC%E2%C3%FB&B1=%BC%EC+%CB%F7";$url="http://210.30.68.130/wxjs/tmjs.asp";//查询地点$ch=curl_init();curl_setopt($ch,CURLOPT_REFERER,"http://210.30.68.130/wxjs/tmjs_form.asp/");//摹拟来历curl_setopt($ch,CURLOPT_URL,$url);//URLcurl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);curl_setopt($ch,CURLOPT_HEADER,false);curl_setopt($ch,CURLOPT_POST,1);//摹拟POSTcurl_setopt($ch,CURLOPT_POSTFIELDS,$post);//POST内容curl_exec($ch);$output=curl_close($ch);echo$output;?>复制代码但前往的页面老是显现没有相干内容,假如把关头字改成英语大概数字就能够一般显现了,因而想到这应当是编码成绩,然后在post下面能够看到txtTm=%D2%F4%C0%D6经由查询得知这是url编码,汉字会举行转化,假如是英语则不会产生任何改动,因而就把头信息也加了部份内容出来以下:$header=array();$header[]=User-Agent:Mozilla/5.0(WindowsNT6.1;rv:30.0)Gecko/20100101Firefox/30.0;$header[]=Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8;$header[]=Connection:keep-alive;$header[]=Content-Type:application/x-www-form-urlencoded;curl_setopt($ch,CURLOPT_HTTPHEADER,$header);实在次要是$header[]=Content-Type:application/x-www-form-urlencoded;再次加载页面后假如是汉字显现仍是没有相干的内容,随后想到了一个很复杂的成绩地点,php程序是utf8的,但是藏书楼的网站是gb2312,好吧,再加上一句,$keyword=iconv(UTF-8,GB2312,$keyword);再次加载乐成,这个应当才是成绩关头地点,然后我把头信息删除后增加一句$keyword=urlencode($keyword);再次加载也就是上面的代码:复制代码<?php$keyword="天下";$keyword=iconv(UTF-8,GB2312,$keyword);$keyword=urlencode($keyword);$post="txtWxlx=CN&hidWxlx=spanCNLx&txtPY=HZ&txtTm={$keyword}&txtLx=%25&txtSearchType=1&nMaxCount=100&nSetPageSize=20&cSortFld=%D5%FD%CC%E2%C3%FB&B1=%BC%EC+%CB%F7";$url="http://210.30.68.130/wxjs/tmjs.asp";//查询地点$ch=curl_init();curl_setopt($ch,CURLOPT_REFERER,"http://210.30.68.130/wxjs/tmjs_form.asp/");//摹拟来历curl_setopt($ch,CURLOPT_URL,$url);//URLcurl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);curl_setopt($ch,CURLOPT_HEADER,false);curl_setopt($ch,CURLOPT_POST,1);//摹拟POSTcurl_setopt($ch,CURLOPT_POSTFIELDS,$post);//POST内容curl_exec($ch);$output=curl_close($ch);echo$output;?>复制代码不出所料,一般显现了,随后就是页面内容的收罗排版成绩了。不过是正则了。(因为是校园网只能我们内网会见)会有很多高手的鼓励,新手的支持,慢慢你劲头就十足,有更多的信心和兴趣去学。
作者: 因胸联盟    时间: 2015-1-18 21:53
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 仓酷云    时间: 2015-1-24 16:43
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者: 山那边是海    时间: 2015-2-2 11:15
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 若相依    时间: 2015-2-7 18:53
兴趣是最好的老师,百度是最好的词典。
作者: 海妖    时间: 2015-2-23 00:38
本文当是我的笔记啦,遇到的问题随时填充
作者: 第二个灵魂    时间: 2015-3-7 05:10
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 愤怒的大鸟    时间: 2015-3-14 13:37
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: admin    时间: 2015-3-21 09:36
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2