cURL-GET/POST/上传
1.最基本的抓取页面
<?php $cURL = curl_init();//实例化curl对象 curl_setopt($cURL,CURLOPT_URL,'www.baidu.com'); curl_setopt($cURL,CURLOPT_RETURNTRANSFER,1); //抓取到的结果不立即输出 curl_setopt($cURL,CURLOPT_HEADER,0); //header信息是否输出 $result = curl_exec($cURL); //执行请求 echo $result; ?>
2.带Get的请求。get 直接在URL加上参数domain?first=1&second=2
3.带POST的请求。
假设我们现在post两个东西。一个是字符串,一个是文件。
写两个脚本:
1.curl.php 用于处理模拟POST提交请求的
2.post.php验证CURL是否生效
<?php //post.php print_r($_POST); print_r($_FILES); ?>
<?php $ch = curl_init(); $data = array('name' => 'Foo', 'file' => '@E:\wamp\www\1.jpg'); //绝对路径,且不建议有中文字符,必须加@告知是文件,否则当成字符串POST参数 curl_setopt($ch, CURLOPT_URL, 'http://localhost/post.php'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); ?>
运行,出现了如下问题:
Array | |
( | |
[name] => Foo | |
) | |
Array | |
( | |
[file] => Array | |
( | |
[name] => 1.jpg | |
[type] => application/octet-stream | |
[tmp_name] => E:\wamp\tmp\phpD8FF.tmp | |
[error] => 0 | |
[size] => 91046 | |
) | |
) |
我们只要加上PHP本身的上传函数,就已经实现了不通过表单提交的上传操作。上面提示了
这个是说虽然这个方法可以用,但是不赞成使用这个方法。好像ereg_match,session_registers.
同时这个错误提示还给我们一个建议,使用CURLFile class来解决上传问题。
<?php
$ch = curl_init();
$data = array(‘name‘ => ‘Foo‘, ‘file‘ => new \CURLFile(realpath(‘1.jpg‘))); //绝对路径
curl_setopt($ch, CURLOPT_URL, ‘http://localhost/post.php‘);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>
就是这么简单。开发的时候留心PHP的版本。如果代码在几个PHP版本下都有在部署。那么可以采取折中的方式。给与充分的判断。是采取@或者是调用CURLFile
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。