bnbweb/includes/lib_curl.php
2022-11-14 23:49:28 +08:00

274 lines
8.7 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if (!defined('IN_ECS'))
{
die('Hacking attempt');
}
/**
* @desc 封裝curl
*/
function doCurlPost($url, $requestString, $type = 1,$timeout = 5,$return=true) {
if($url == "" || $requestString == "" || $timeout <= 0){
return false;
}
$rtntrans=$return;
$header[] = 'Content-Length:'.strlen($requestString);
switch($type){
case '3':
$header[] = 'Content-Type: text/html';
break;
case '2':
$header[] = 'Content-Type: application/x-www-form-urlencoded';
break;
case '1':
default:
$header[] = 'Content-Type: application/json';
break;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, $rtntrans);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS,$requestString);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result= curl_exec($ch);
if(!curl_errno($ch))
{
curl_close($ch);
return $result;
}else{
curl_close($ch);
return false;
}
}
/**
* @desc 封装curl的调用接口post的请求方式
*/
function doCurlPostsslRequest($url, $requestString,$pemfile, $timeout = 5) {
if($url == "" || $requestString == "" || $timeout <= 0){
return false;
}
echo $pemfile;
$con = curl_init((string)$url);
curl_setopt($con, CURLOPT_HEADER, false);
curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
curl_setopt($con, CURLOPT_POST, true);
curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
curl_setopt($con, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($con, CURLOPT_SSL_VERIFYHOST, 2);
//curl_setopt($ch, CURLOPT_SSLCERT, $pemfile);
//curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
curl_setopt($con, CURLOPT_CAINFO, $pemfile);
return curl_exec($con);
}
/**
* @desc 封装curl的调用接口post Json数据的请求方式
*/
function doCurlPostJsonReq($url, $requestString, $timeout = 25){
if($url == "" || $requestString == "" || $timeout <= 0){
return false;
}
$con = curl_init((string)$url);
curl_setopt($con, CURLOPT_HEADER, false);
curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
curl_setopt($con, CURLOPT_POST, true);
curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
curl_setopt($con, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
return curl_exec($con);
}
/**
* @desc 封装curl的调用接口post form数据的请求方式
*/
function doCurlPostFormReq($url, $requestString, $timeout = 25){
if($url == "" || $requestString == "" || $timeout <= 0){
return false;
}
$con = curl_init((string)$url);
curl_setopt($con, CURLOPT_HEADER, false);
curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
curl_setopt($con, CURLOPT_POST, true);
curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
curl_setopt($con, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded')
);
return curl_exec($con);
}
/**
* @desc 封装curl的调用接口get的请求方式
*/
function doCurlGetRequest($url, $data = array(), $timeout = 10) {
if($url == "" || $timeout <= 0){
return false;
}
if($data != array()) {
$url = $url . '?' . http_build_query($data);
}
Log::write("发送URL[".$url."]");
$con = curl_init((string)$url);
curl_setopt($con, CURLOPT_HEADER, false);
curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
curl_setopt($con, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($con, CURLOPT_SSL_VERIFYHOST, false);
return curl_exec($con);
}
/**
*截取字符串,中文无乱码
*/
function msubstr($str, $start=0, $length=0,$suffix=false,$charset="utf-8"){
if(mb_strlen($str,"UTF8") >= $length){
$next_str = "";
}else{
$next_str = "";
}
if(function_exists("mb_substr")){
if($suffix)
// return mb_substr($str, $start, $length, $charset)."…";
return mb_substr($str, $start, $length, $charset).$next_str;
else
return mb_substr($str, $start, $length, $charset);
}elseif(function_exists('iconv_substr')) {
if($suffix)
// return iconv_substr($str,$start,$length,$charset)."…";
return iconv_substr($str,$start,$length,$charset).$next_str;
else
return iconv_substr($str,$start,$length,$charset);
}
$re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";
$re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";
$re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/";
$re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("",array_slice($match[0], $start, $length));
if($suffix) return $slice."";
if(!$suffix) return $slice;
return $slice;
}
/**
*用户名*隐藏
*$str = "如来神掌";
*echo cut_str($str, 1, 0).'**'.cut_str($str, 1, -1);
*输出:如**掌
*/
function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
{
if($code == 'UTF-8')
{
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $string, $t_string);
if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen));
return join('', array_slice($t_string[0], $start, $sublen));
}
else
{
$start = $start*2;
$sublen = $sublen*2;
$strlen = strlen($string);
$tmpstr = '';
for($i=0; $i< $strlen; $i++)
{
if($i>=$start && $i< ($start+$sublen))
{
if(ord(substr($string, $i, 1))>129)
{
$tmpstr.= substr($string, $i, 2);
}
else
{
$tmpstr.= substr($string, $i, 1);
}
}
if(ord(substr($string, $i, 1))>129) $i++;
}
//if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
return $tmpstr;
}
}
/*
*解决json_encode转换中文的问题在php5.4下json_encode本身解决的这个问题
*/
function unescapedUnicode($match)
{
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}
/**
*截取手机号
*demo:13112345678
*return:131****5678
*/
function hidtel($phone){
$IsWhat = preg_match('/(0[0-9]{2,3}[-]?[2-9][0-9]{6,7}[-]?[0-9]?)/i',$phone); //固定电话
if($IsWhat == 1){
return preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);
}else{
return preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);
}
}
//获取IP
function getIp()
{
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$realip = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}
//把汉字转换为数字
function getUnicodeFromOneUTF8($word)
{
//获取其字符的内部数组表示所以本文件应用utf-8编码!
//$word = iconv("gb2312", "utf-8", $word);
if (is_array($word))
$arr = $word;
else
$arr = str_split($word);
//此时,$arr应类似array(228, 189, 160)
//定义一个空字符串存储
$bin_str = '';
//转成数字再转成二进制字符串,最后联合起来。
foreach ($arr as $value)
$bin_str .= decbin(ord($value));
//此时,$bin_str应类似111001001011110110100000
//正则截取
$bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str);
//此时, $bin_str应类似0100111101100000,如果是汉字"你"
return bindec($bin_str);
//返回类似20320 汉字"你"
//return dechex(bindec($bin_str));
//如想返回十六进制4f60用这句
}
?>