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本身的上传函数,就已经实现了不通过表单提交的上传操作。上面提示了

Deprecated

这个是说虽然这个方法可以用,但是不赞成使用这个方法。好像ereg_match,session_registers.

同时这个错误提示还给我们一个建议,使用CURLFile class来解决上传问题。

<pre name="code" class="php"><?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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值