标签为 "curl_init" 的存档

php打包文件,并使用curl上传

php打包zip文件,如果包含中文名,将文件名转化为GBK编码即可。

<?php
 
$zipfile = 'zipByPhp.zip';
 
$zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释
if($zip->open($zipfile, ZIPARCHIVE::CREATE)!==TRUE){
    exit('create zip file error');
}
$files = array('queryimg.php', 'multicurl.php');
foreach($files as $file){
    $addfilename = iconv('UTF-8', 'GBK//IGNORE', $file);
    $zip->addFile($file, $addfilename);
}
$zip->close();

php curl上传文件

$field = array("upimg"=>"@/tmp/phpzip.zip");//文件路径,前面要加@,表明是文件上传.key与后台处理文件对应,使用$_FILES['upimg']获取
$curl = curl_init("http://localhost/a.php");
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,$field);//这里的$field必须是数组结构,不要自作聪明使用 http_build_query,否则不认文件了
curl_exec($curl);

php curl 设置host curl_setopt CURLOPT_HTTPHEADER 指定host

我们在开发测试时,有时web服务器会绑定一个域名,但是因为dns是无法解析的,我们需要设置host文件去访问。
但是,如果我们是需要通过curl访问的话,无法访问该url的host主机。所以,需要通过指定host的方式来访问,具体访问方式如下:
如果是linux下的curl命令:

curl --silent -H "Host: www.digdeeply.info" "192.168.0.1/index.php"

如果使用php的curl的话,使用curl_setopt设置一下CURLOPT_HTTPHEADER即可。
请参考以下函数使用:

//httpHeader	设置的 http head 参数 数组形式 如 array('Host: digdeeply.info')
function curl_by_host($url,$postString='',$httpHeader='')
{
	$ch = curl_init();
	curl_setopt($ch,CURLOPT_URL,$url);
	curl_setopt($ch,CURLOPT_POSTFIELDS,$postString);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
	curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);

	if(!empty($httpHeader) && is_array($httpHeader))
	{
		curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeader);
	}
	$data = curl_exec($ch);
	$info = curl_getinfo($ch);
	curl_close($ch);
	if(curl_errno($ch)){
		return $info;
	}
	return $data;
}