欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ThinkPHP 公共函数整理

程序员文章站 2022-10-17 14:07:45
//通用增加 function add($dataName,$data){ return M($dataName)->add($data); } //通用...
//通用增加
function add($dataName,$data){
    return M($dataName)->add($data);
}
//通用删除
function del($dataName,$where){
    return M($dataName)->where($where)->delete();
}
//通用修改
function edit($dataName,$where,$data){
    return M($dataName)->where($where)->save($data);
    //echo M($dataName)->_sql();die;//输出sql语句

}
/**
 * 用户二维码图片
 * @param $user_id [用户id]
 * @param $recommend[推荐码]
 * @param $data[链接地址]
 */
//生成图片二维码 $data链接  $id user_id;
function code($url,$user_id,$recommend){
    $user=M('users')->field('user_name')->where('user_id='.$user_id)->find();
    $user_name=$user['user_name'];
    $canshu="?r_ec=$recommend";
    $url=$url.$canshu;
    vendor("phpqrcode.phpqrcode");
    // 纠错级别:L、M、Q、H
    $level = 'H';
    // 点的大小:1到10,用于手机端4就可以了
    $size = 4;
    // 下面注释了把二维码图片保存到本地的代码,如果要保存图片,用$fileName替换第二个参数false
    $path = "Public/code/".date("ymd")."/";
    if(!is_dir($path))
    {
        mkdir($path);
    }
    $fileName = $path.$user_name.'.png';
    $data['code']=$fileName;
    M('users')->where('user_id='.$user_id)->save($data);
    ob_end_clean();//清空缓冲区
    QRcode::png($url, $fileName, $level, $size,1);
    $furl=C('REMOTE_ROOT').$fileName;
    ftp_upload($furl,$fileName);
}
/**
 * 商品历史浏览记录
 * $data 商品记录信息
 */
function _history($data)
{
    if(!$data || !is_array($data))
    {
        return false;
    }
    //判断cookie类里面是否有浏览记录
    if(!empty($_COOKIE['history']))
    {
        $history = unserialize($_COOKIE['history']);
        array_unshift($history, $data); //在浏览记录顶部加入
        /* 去除重复记录 */
        $rows = array();
        foreach ($history as $v)
        {
            if(in_array($v, $rows))
            {
                continue;
            }
            $rows[] = $v;
        }
        /* 如果记录数量多余5则去除 */
        while (count($rows) > 5)
        {
            array_pop($rows); //弹出
        }
        setcookie('history',serialize($rows),time() + 3600 * 24 * 30,'/');
    }
    else
    {
        $history = serialize(array($data));

        setcookie('history',$history,time() + 3600 * 24 * 30,'/');
    }
}
//ue编辑器通过FTP上传图片($str代表从表单接收到的content字符串),返回处理后的content字符串
function ftp_image_upload($str){
    $local_root = $_SERVER['DOCUMENT_ROOT'];
    $host = C('FTP_SEVER');
    $remote_root = C('REMOTE_ROOT');
    $pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png|\.jpeg|\.mp4]))[\'|\"].*?[\/]?>/";
    preg_match_all($pattern,$str,$match);
    foreach ($match[1] as $k => $v) {
        $localfile  = $local_root.$v;
        $remotefile = $remote_root.$v;
        ftp_upload($remotefile,$localfile);
    }
    return str_replace("src=\"/Public", "src=\"$host/Public", $str);
}

//FTP上传文件函数
function ftp_upload($remotefile,$localfile){
    $ftp = new \Think\Ftp();
    $data['server'] = C('FTP_HOST');
    $data['username'] = C('FTP_NAME');//ftp帐户
    $data['password'] = C('FTP_PWD');//ftp密码
    $data['port'] = C('FTP_PORT');//ftp端口,默认为21
    $data['pasv'] = C('FTP_PASV');//是否开启被动模式,true开启,默认不开启
    $data['ssl'] = C('FTP_SSL');//ssl连接,默认不开启
    $data['timeout'] = C('FTP_TIMEOUT');//超时时间,默认60,单位 s
    $info = $ftp->start($data);
    if($info){
        if($ftp->put($remotefile,$localfile)){}
    }
    $ftp->close();
}
/**
 *  $param 数组 传入的参数需要与API的模板对应
 *
 *  $mobile 手机号码
 */
function send_verify($mobile='18831605741'){
    $rand=md5(rand(000000,999999));
    cookie('code',$rand,time()+6000,"/");
    $param['code']=$rand;
    $appkey = "23496841";
    $secret = "f3b9840f579585feeb37b02474fe6bd0";
    vendor('Alimsg.top.TopClient');
    vendor('Alimsg.top.ResultSet');
    vendor('Alimsg.top.RequestCheckUtil');
    vendor('Alimsg.top.TopLogger');
    vendor('Alimsg.top.request.AlibabaAliqinFcSmsNumSendRequest');
    vendor('Alimsg.TopSdk.php');
    $c = new \TopClient;
    $c->appkey = $appkey;
    $c->secretKey = $secret;
    $req = new \AlibabaAliqinFcSmsNumSendRequest;
    $req->setSmsTemplateCode("SMS_24575052");
    $req->setExtend("3");
    $req->setSmsType("normal");
    $req->setSmsFreeSignName("简单主义");
    $req->setSmsParam($param);
    $req->setRecNum($mobile);
    $resp = $c->execute($req);
}
/**
 * 微信扫码支付
 * @param  array $order 订单 必须包含支付所需要的参数 body(产品描述)、total_fee(订单金额)、out_trade_no(订单号)、product_id(产品id)
 */
function weixinpay($order){
    $order['trade_type']='NATIVE';
    Vendor('Weixinpay.Weixinpay');
    $weixinpay=new \Weixinpay();
    return $weixinpay->pay($order);
}

/**
 * 生成二维码
 * @param  string  $url  url连接
 * @param  integer $size 尺寸 纯数字
 */
function qrcode($url,$size=4){
    vendor("phpqrcode.phpqrcode");
    QRcode::png($url,false,QR_ECLEVEL_L,$size,2,false,0xFFFFFF,0x000000);
}

function is_weixin(){

    if(strpos($_SERVER['HTTP_USER_AGENT'],'MicroMessenger') === false ){
        return false;
    }else{
        return ture;

    }
}
/**
 * 使用curl获取远程数据
 * @param  string $url url连接
 * @return string      获取到的数据
 */
function curl_get_contents($url){
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);                //设置访问的url地址
    // curl_setopt($ch,CURLOPT_HEADER,1);               //是否显示头部信息
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);               //设置超时
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);   //用户访问代理 User-Agent
    curl_setopt($ch, CURLOPT_REFERER,$_SERVER['HTTP_HOST']);        //设置 referer
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);          //跟踪301
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        //返回结果
    $r=curl_exec($ch);
    curl_close($ch);
    return $r;
}
//获取用户ip地址
function get_ip() {
    static $ip;
    if (isset($_SERVER)) {
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
            $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $ip = $_SERVER["REMOTE_ADDR"];
        }
    } else {
        if (getenv("HTTP_X_FORWARDED_FOR")) {
            $ip = getenv("HTTP_X_FORWARDED_FOR");
        } else if (getenv("HTTP_CLIENT_IP")) {
            $ip = getenv("HTTP_CLIENT_IP");
        } else {
            $ip = getenv("REMOTE_ADDR");
        }
    }

    if (preg_match('/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/', $ip)) {
        return $ip;
    } else {
        return '127.0.0.1';
    }
}
//显示图片
function showImage($url, $width = '', $height = '')
{
    $ic = C('FTP_SEVER').C('REMOTE_ROOT');
    if($width)
        $width = "width='$width'";
    if($height)
        $height = "height='$height'";
    echo "<img ".$width. " ".$height." src="."'".$ic.$url."' />";
}

**
 * 公用的方法  进行信息的提示
 */
function showMsg($status,$message,$data=array()){
    $result = array(
        'status' => $status,
        'message' =>$message,
        'data' =>$data
    );
    exit(json_encode($result));
}
/**
 * 对象转化为数组
 * @param $e
 * @return array|void
 */
function objectToArray($e){
    $e=(array)$e;
    foreach($e as $k=>$v){
        if( gettype($v)=='resource' ) return;
        if( gettype($v)=='object' || gettype($v)=='array' )
            $e[$k]=(array)objectToArray($v);
    }
    return $e;
}
function trimall($str)//删除空格
{
    $qian=array(" "," ","\t","\n","\r");$hou=array("","","","","");
    return str_replace($qian,$hou,$str);
}
/**
 * excel表数据转化为数组
 * @param string $filePath
 * @param int $sheet
 * @return array|void
 */
function format_excel2array($filePath='',$sheet=0){
    if(empty($filePath) or !file_exists($filePath)){die('file not exists');}
    $PHPReader = new PHPExcel_Reader_Excel2007();        //建立reader对象
    if(!$PHPReader->canRead($filePath)){
        $PHPReader = new PHPExcel_Reader_Excel5();
        if(!$PHPReader->canRead($filePath)){
            echo 'no Excel';
            return ;
        }
    }
    $PHPExcel = $PHPReader->load($filePath);        //建立excel对象
    $currentSheet = $PHPExcel->getSheet($sheet);        //**读取excel文件中的指定工作表*/
    $allColumn = $currentSheet->getHighestColumn();        //**取得最大的列号*/
    $allRow = $currentSheet->getHighestRow();        //**取得一共有多少行*/
    $data = array();
    for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){        //循环读取每个单元格的内容。注意行从1开始,列从A开始
        for($colIndex='A';$colIndex<=$allColumn;$colIndex++){
            $addr = $colIndex.$rowIndex;
            $cell = $currentSheet->getCell($addr)->getValue();
            if($cell instanceof PHPExcel_RichText){ //富文本转换字符串
                $cell = $cell->__toString();
            }
            $data[$rowIndex][$colIndex] = $cell;
        }
    }
    return $data;
}