PHP 一些常用的公共小技巧方法整理
2023-04-18 16:56:07 时间
- 在此,整理一下平常工作中,常用的一些公共方法,方便后期开发使用
/**
* 公用的方法 返回json数据,进行信息的提示
* @param int $status 状态
* @param string $msg 提示信息
* @param array $data 返回数据
*/
function showMsg($status = 1,$msg = '',$data = array()){
$result = array(
'status' => $status,
'msg' =>$msg,
'data' =>$data
);
return exit(json_encode($result,JSON_UNESCAPED_UNICODE));
}
/**
* 判断一个数组中的元素是否全存在于另一个数组中
* @param $arr array 一维数组
* @param $allArr array 一维数组
* @return boolean
*/
function currArrExistsInOther($arr = [], $allArr = []){
if (!empty($arr) && !empty($allArr)) {
for ($i = 0; $i < count($arr); $i ++) {
if (!in_array($arr[$i], $allArr)) {
return false;
}
}
return true;
}else{
return false;
}
}
/**
* 用户二维码图片
* @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);
}
function is_weixin(){
if(strpos($_SERVER['HTTP_USER_AGENT'],'MicroMessenger') === false ){
return false;
}else{
return ture;
}
}
//获取用户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';
}
}
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击