PHP curl simulates post request to submit data_PHP tutorial

WBOY
Release: 2016-07-13 10:27:26
Original
868 people have browsed it

Recently I am working on a collection program for campus library book information. Since it is a collection of library books, there must be a page for submitting searches. It is nothing more than post submission, which reminds me of curl simulation submission. First of all Capture packets through firebug and query. The format after submission of the post is as follows:

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,随后代码如下:<br>

<?<span>php 
</span><span>$keyword</span>="音乐"<span>;</span><span>$post</span>="txtWxlx=CN&hidWxlx=spanCNLx&txtPY=HZ&txtTm={<span>$keyword</span>}&txtLx=%25&txtSearchType=1&nMaxCount=100&nSetPageSize=20&cSortFld=%D5%FD%CC%E2%C3%FB&B1=%BC%EC+%CB%F7"<span>;
</span><span>$url</span> = "http://210.30.68.130/wxjs/tmjs.asp"<span>;
</span><span>//</span><span>查询地址</span>
<span>$ch</span> =<span> curl_init(); 
curl_setopt (</span><span>$ch</span>, CURLOPT_REFERER, "http://210.30.68.130/wxjs/tmjs_form.asp/ "); <span>//</span><span>模拟来源  </span>
curl_setopt(<span>$ch</span>, CURLOPT_URL, <span>$url</span>);<span>//</span><span>URL  </span>
curl_setopt(<span>$ch</span>,CURLOPT_FOLLOWLOCATION,1<span>);
curl_setopt(</span><span>$ch</span>, CURLOPT_HEADER, <span>false</span><span>);
curl_setopt(</span><span>$ch</span>, CURLOPT_POST, 1);  <span>//</span><span>模拟POST  </span>
curl_setopt(<span>$ch</span>, CURLOPT_POSTFIELDS, <span>$post</span>);<span>//</span><span>POST内容  </span>
curl_exec(<span>$ch</span><span>);  
</span><span>$output</span> = curl_close(<span>$ch</span><span>); 
</span><span>echo</span> <span>$output</span><span>;
 </span>?>
Copy after login

But the page returned always shows that there is no relevant content. If you change the keywords to English or numbers, it can be displayed normally, so I thought this should be an encoding problem, and then you can see txtTm=%D2%F4 on the post. %C0%D6 found out through query that this is url encoding, and Chinese characters will be converted. If it is English, no changes will occur, so some content was added to the header information as follows:

<span>$header</span> = <span>array</span><span>();
</span><span>$header</span>[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0'<span>;
</span><span>$header</span>[] = 'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'<span>;
</span><span>$header</span>[] = 'Connection: keep-alive'<span>;
</span><span>$header</span>[] = 'Content-Type:application/x-www-form-urlencoded'<span>;
curl_setopt ( </span><span>$ch</span>, CURLOPT_HTTPHEADER, <span>$header</span> ); 
Copy after login

Actually, the main reason is $header[] = 'Content-Type:application/x-www-form-urlencoded'; after loading the page again, if the Chinese characters are displayed, there is still no relevant content. Then I thought of a very simple problem. , the PHP program is utf8, but the library website is gb2312, okay, let me add another sentence, $keyword = iconv('UTF-8', 'GB2312', $keyword); loaded again successfully, this should be The key to the problem is, then I delete the header information and add $keyword = urlencode($keyword); and load it again, which is the following code:

<?<span>php 
</span><span>$keyword</span>="世界"<span>;
</span><span>$keyword</span> =  <span>iconv</span>('UTF-8', 'GB2312', <span>$keyword</span><span>);
</span><span>$keyword</span> = <span>urlencode</span>(<span>$keyword</span><span>);
</span><span>$post</span>="txtWxlx=CN&hidWxlx=spanCNLx&txtPY=HZ&txtTm={<span>$keyword</span>}&txtLx=%25&txtSearchType=1&nMaxCount=100&nSetPageSize=20&cSortFld=%D5%FD%CC%E2%C3%FB&B1=%BC%EC+%CB%F7"<span>;
</span><span>$url</span> = "http://210.30.68.130/wxjs/tmjs.asp"<span>;
</span><span>//</span><span>查询地址</span>
<span>$ch</span> =<span> curl_init();
curl_setopt (</span><span>$ch</span>, CURLOPT_REFERER, "http://210.30.68.130/wxjs/tmjs_form.asp/ "); <span>//</span><span>模拟来源  </span>
curl_setopt(<span>$ch</span>, CURLOPT_URL, <span>$url</span>);<span>//</span><span>URL  </span>
curl_setopt(<span>$ch</span>,CURLOPT_FOLLOWLOCATION,1<span>);
curl_setopt(</span><span>$ch</span>, CURLOPT_HEADER, <span>false</span><span>);
curl_setopt(</span><span>$ch</span>, CURLOPT_POST, 1);  <span>//</span><span>模拟POST  </span>
curl_setopt(<span>$ch</span>, CURLOPT_POSTFIELDS, <span>$post</span>);<span>//</span><span>POST内容  </span>
curl_exec(<span>$ch</span><span>);  
</span><span>$output</span> = curl_close(<span>$ch</span><span>); 
</span><span>echo</span> <span>$output</span><span>;
 </span>?>
Copy after login

As expected, it was displayed normally, and then there was the problem of collecting and formatting the page content. It’s nothing more than regular. (Because it is a campus network and can only be accessed by our intranet)

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/819719.htmlTechArticleI am currently working on a collection program for campus library book information. Since it is a collection of library books, I must submit a search The page is nothing more than post submission, which reminds me of curl simulation submission,...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template