站三界导航
首页 PHP代码
  • tp5常用公共方法-二维数组去重(支持多字段同时匹配去重)
    tp5常用公共方法-二维数组去重(支持多字段同时匹配去重)

    functionmoreArrayUnique($arr,$field=[],$allField=true){//必须是传入数组if(!is_array($field))returnfalse;//先把二维数组中的内层数组的键值记录在在一维数组中foreach($arr[0]as$k=>$v)$allField[]=$k;if($field){//按照顺序排字段名foreach($allFieldas$key=>$val){if(!in_array($val,$field))unset($allField[$key]);}$field=$allField;}foreach($arras$k=>$v){foreach($vas$key=>$item){if(!in_array($key,$field))unset($v[$key]);}//降维用implode()也行$v=implode(",",$v);//保留原来的键值$temp[]即为不保留原来键值$temp[$k]=$v;}//去重:去掉重复的元素$arr=array_unique($temp);if($allField){foreach($arras$k=>$v){//拆分后的重组如:Array([0]=>张三[1]=>18)$a=explode(",",$v);//将原来的键与值重新合并$arrAfter[]=array_combine($field,$a);}}else{//将键值保存为一维数组$allKey=array_keys($temp);$arrAfter=[];foreach($arras$k=>$v){//数组去重if(!in_array($k,$allKey)){unset($arr[$k]);}else{$a=explode(",",$v);$arrAfter[]=array_combine($field,$a);}}}return$arrAfter??false;}

    • PHP代码
    • 55阅读
    • 2022-09-09

  • tp5常用公共方法-计算两日期相差天数
    tp5常用公共方法-计算两日期相差天数

    functioncalDifferentDay($endTime='',$startTime='',$flag=1){//转换为天,取出时分秒$startTime=($startTime=='')?date('Y-m-dH:i:s',time()):$startTime;$endTime=($endTime=='')?date('Y-m-dH:i:s',time()):$endTime;if($flag){$startTime=strtotime($startTime);$endTime=strtotime($endTime);}$startTime=floor($startTime/86400);$endTime=floor($endTime/86400);return$endTime-$startTime;}

    • PHP代码
    • 76阅读
    • 2022-09-09

  • php多种方法判断是否为手机、微信访问的函数,很准确
    php多种方法判断是否为手机、微信访问的函数,很准确

    php多种方法判断是否为手机访问以及微信端访问,100%准确,可以收藏下functionismobile(){//如果有HTTP_X_WAP_PROFILE则一定是移动设备if(isset($_SERVER['HTTP_X_WAP_PROFILE'])){returntrue;}//如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息if(isset($_SERVER['HTTP_VIA'])){//找不到为flase,否则为truereturnstristr($_SERVER['HTTP_VIA'],'wap')?true:false;}//脑残法,判断手机发送的客户端标志,兼容性有待提高if(isset($_SERVER['HTTP_USER_AGENT'])){$clientkeywords=array('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile');//从HTTP_USER_AGENT中查找手机浏览器的关键字if(preg_match("/(".implode('|',$clientkeywords).")/i",strtolower($_SERVER['HTTP_USER_AGENT']))){returntrue;}}//协议法,因为有可能不准确,放到最后判断if(isset($_SERVER['HTTP_ACCEPT'])){//如果只支持wml并且不支持html那一定是移动设备//如果支持wml和html但是wml在html之前则是移动设备if((strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==false)&&(strpos($_SERVER['HTTP_ACCEPT'],'text/html')===false||(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')<strpos($_SERVER['HTTP_ACCEPT'],'text/html')))){returntrue;}}returnfalse;}//php判断是否为微信:functionisWeixin(){if(strpos($_SERVER['HTTP_USER_AGENT'],'MicroMessenger')!==false){returntrue;}else{returnfalse;}}使用方法如下:<?if(ismobile()){?>是手机浏览!<?}else{?>不是手机浏览!<?}?><?if(isWeixin()){?>是微信浏览器!<?}else{?>不是微信浏览器!<?}?>

    • PHP代码
    • 97阅读
    • 2022-07-01

  • 详解PHP接口访问频率限制
    详解PHP接口访问频率限制

    /***检测用户接口访问频率*/functionapi_frequency_visits($uid){$key="user:{$uid}:api:frequency";$redis=newRedis();$redis->connect('127.0.0.1');$data=$redis->hGetAll($key);//需要删除的key$del_key=[];//时间内访问的总次数$total=0;//时间内最大访问次数$max_frequency=10;//当前时间$now_time=time();//限制时间$limit_time=60;foreach($dataas$time=>$count){if($time<$now_time-$limit_time){$del_key[]=$time;}else{$total+=$count;}}//存在需要删除的keyif($del_key){$redis->hDel($key,...$del_key);}if($total>=$max_frequency){returnfalse;}return$redis->hIncrBy($key,$now_time,1);}$uid=1;$result=api_frequency_visits($uid);if(!$result){echojson_encode(['code'=>0,'msg'=>'操作过于频繁','data'=>[]]);die;}echojson_encode(['code'=>1,'msg'=>'','data'=>['uid'=>$uid,'other'=>rand()]]);die;限制时间,限制次数这些都可以修改,包括根据用户id也可以换成自己想要的限制,比如IP等。

    • PHP代码
    • 105阅读
    • 2022-07-01

  • PHP简单检测网址是否能够正常打开的方法
    PHP简单检测网址是否能够正常打开的方法

    <?phpfunctionhttpcode($url){$ch=curl_init();$timeout=3;curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_HEADER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);curl_setopt($ch,CURLOPT_URL,$url);curl_exec($ch);return$httpcode=curl_getinfo($ch,CURLINFO_HTTP_CODE);curl_close($ch);}echo"判断链接:".httpcode('https://www.zhansanjie.com');?>如果显示为200则正常,如果显示其它值表示不正常;$timeout后面的3是设置超时秒数。

    • PHP代码
    • 104阅读
    • 2022-07-01

  • PHP判断URL是否合法,判断链接是否正确
    PHP判断URL是否合法,判断链接是否正确

    方法一,正则<?phpfunctionis_url($url){$r="/http[s]?:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=&\+\%]*/is";if(preg_match($r,$url)){//returntrue;echo'正确的url地址';}else{//returnfalse;echo'不是合法的url地址';}}方法二,使用内置函数filter_var()推荐<?phpfunctionis_url_2($url){if(filter_var($url,FILTER_VALIDATE_URL)!==false){echo'url地址正确';}else{echo'url地址不正确';}}

    • PHP代码
    • 99阅读
    • 2022-07-01

  • php抓取其它网站的动态数据,显示在自己的网页内并同步更新
    php抓取其它网站的动态数据,显示在自己的网页内并同步更新

    $url="http://www.boc.cn/sourcedb/whpj/";$queryServer=curl_init();curl_setopt($queryServer,CURLOPT_URL,$url);curl_setopt($queryServer,CURLOPT_HEADER,0);curl_setopt($queryServer,CURLOPT_RETURNTRANSFER,1);curl_setopt($queryServer,CURLOPT_RETURNTRANSFER,true);curl_setopt($queryServer,CURLOPT_CONNECTTIMEOUT,10);curl_setopt($queryServer,CURLOPT_TIMEOUT,30);$html=curl_exec($queryServer);$html=iconv('UTF-8','GBK//IGNORE',$html);//如果你需要是的数据是utf-8编码的,这一行可以注销,如果需要gbk编码的,请保留.如果出现乱码,就是一行的问题,你自己调着试吧//echo$holder;exit;此处可以输出来测试.$html=str_replace(array("\n","\r","\t"),"",$html);$preg='/<table\s+width=\"800\"[^>]+>(.*?)<\/table>/';preg_match_all($preg,$html,$out);//匹配每行preg_match_all('/<tr[^>]+>(.*?)<\/tr>/',$out[1][0],$tr);//匹配每个td$result=array();$match='/<td.+>([^<]+)<\/td>/U';foreach($tr[0]as$key=>$value){preg_match_all($match,$value,$arr);$result[]=$arr[1];}//输出测试,$result就是你要的数据,至于你要怎么输出显示格式,那就随心调就好了。foreach($resultas$key=>$value){echoimplode("\t",$value);echo"<br>";}exit;

    • PHP代码
    • 113阅读
    • 2022-07-01

  • PHP为任意页面设置访问密码
    PHP为任意页面设置访问密码

    <?php/*********************************************使用方法:**1、将本段代码保存为MkEncrypt.php**2、在要加密的页面前面引入这个php文件*require_once('MkEncrypt.php');**3、设置页面访问密码*MkEncrypt('页面密码');*********************************************///密码Cookie加密盐if(!defined('MK_ENCRYPT_SALT'))define('MK_ENCRYPT_SALT','Kgs$JC!V');/***设置访问密码**@param$password访问密码*@param$pageid页面唯一ID值,用于区分同一网站的不同加密页面*/functionMkEncrypt($password,$pageid='default'){$pageid=md5($pageid);$md5pw=md5(md5($password).MK_ENCRYPT_SALT);$postpwd=isset($_POST['pagepwd'])?addslashes(trim($_POST['pagepwd'])):'';$cookiepwd=isset($_COOKIE['mk_encrypt_'.$pageid])?addslashes(trim($_COOKIE['mk_encrypt_'.$pageid])):'';if($cookiepwd==$md5pw)return;//Cookie密码验证正确if($postpwd==$password){//提交的密码正确setcookie('mk_encrypt_'.$pageid,$md5pw,time()+3600000,'/');return;}?><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="renderer"content="webkit"><metaname="author"content="mengkun"><metaname="viewport"content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"><title>该页面已被加密</title><styletype="text/css">*{font-family:"MicrosoftYahei",微软雅黑,"HelveticaNeue",Helvetica,"HiraginoSansGB","WenQuanYiMicroHei",sans-serif;box-sizing:border-box;margin:0px;padding:0px;font-size:14px;-webkit-transition:.2s;-moz-transition:.2s;-ms-transition:.2s;-o-transition:.2s;transition:.2s}html,body{width:100%;height:100%}body{background-color:#F4F6F9;color:#768093}input,button{font-size:1em;border-radius:3px;-webkit-appearance:none}input{width:100%;padding:5px;box-sizing:border-box;border:1pxsolid#e5e9ef;background-color:#f4f5f7;resize:vertical}input:focus{background-color:#fff;outline:none}button{border:0;background:#6abd09;color:#fff;cursor:pointer;opacity:1;user-select:none}button:hover,button:focus{opacity:.9}button:active{opacity:1}.main{width:100%;max-width:500px;height:300px;padding:30px;background-color:#fff;border-radius:2px;box-shadow:010px60px0rgba(29,29,31,0.09);transition:all.12sease-out;position:absolute;left:0;top:0;bottom:0;right:0;margin:auto;text-align:center}.alert{width:80px}.mk-side-form{margin-bottom:28px}.mk-side-forminput{float:left;padding:2px10px;width:77%;height:37px;border:1pxsolid#ebebeb;border-right-color:transparent;border-radius:2px002px;line-height:37px}.mk-side-formbutton{position:relative;overflow:visible;width:23%;height:37px;border-radius:02px2px0;text-transform:uppercase}.pw-tip{font-weight:normal;font-size:26px;text-align:center;margin:25pxauto}#pw-error{color:red;margin-top:15px;margin-bottom:-20px;}.return-home{text-decoration:none;color:#b1b1b1;font-size:16px}.return-home:hover{color:#1E9FFF;letter-spacing:5px}</style></head><body><divclass="main"><svgclass="alert"viewBox="0010841024"xmlns="http://www.w3.org/2000/svg"width="80"height="80"><defs><style/></defs><pathd="M1060.744895.036L590.54780.656a55.95955.959000-96.9190L22.588896.662a55.95955.95900048.4383.907h942.14a55.95955.95900047.525-85.534zm-470.619-85.172a48.00848.008011-96.0150v-1.567a48.00848.00801196.0150v1.567zm0-175.345a48.00848.008011-96.0150V379.362a48.00848.00801196.0150v255.157z"fill="#FF9800"/></svg><formaction=""method="post"class="mk-side-form"><h2class="pw-tip">该页面已被加密</h2><inputtype="password"name="pagepwd"placeholder="请输入访问密码查看"required><buttontype="submit">提交</button><?phpif($postpwd):?><pid="pw-error">Oops!密码不对哦~</p><script>setTimeout(function(){document.getElementById("pw-error").style.display="none"},2000);</script><?phpendif;?></form><ahref="/"class="return-home"title="点击回到网站首页">-返回首页-</a></div></body></html><?phpexit();}

    • PHP代码
    • 90阅读
    • 2022-07-01

  • 简单的PHP实现域名授权的两种方法
    简单的PHP实现域名授权的两种方法

    01.在线校验域名授权的方法:客户端代码:<?php//获取不带端口号的域名前缀$servername=trim($_SERVER['SERVER_NAME']);//获取服务端授权文件校验$verifyurl=file_get_contents('http://www.***.com/copyright.php?domain='.$servername);if(!empty($verifyurl)){echo"已授权!";//授权成功}else{die("未授权!");//授权失败}?>服务端代码:<?php//获取域名$domain=$_GET['domain'];//授权域名列表$Array=array('127.0.0.1','localhost');//校验结果echoin_array($domain,$Array)?'yes':'';?>域名授权代码可封装进函数,或者进行加密,对于常用的PHP加密形式,都有其破解的方法,比如ZendGuard、ionCube等,如果授权的域名较多,可以在项目中增加域名字段,将域名写入数据库再进行读取和校验,02.独立校验域名授权的方法:<?phpfunctionallow_domain(){$is_allow=false;//获取不带端口号的域名前缀$servername=trim($_SERVER['SERVER_NAME']);//授权域名列表$Array=array("localhost","127.0.0.1");//遍历数组foreach($Arrayas$value){$value=trim($value);$domain=explode($value,$servername);if(count($domain)>1){$is_allow=true;break;}}if(!$is_allow){die("域名未授权!");//授权失败}else{echo"域名已授权!";//授权成功}}allow_domain();?>域名授权的目的在于保护知识产权,鼓励开发者能够发布更多优秀的作品,推动整个网络社会的文化发展与科技进步,有着十分重要的意义。同时也请大家支持正版支持原创!

    • PHP代码
    • 86阅读
    • 2022-07-01

  • PHP实时获取当前在线人数
    PHP实时获取当前在线人数

    <?phpheader('Content-type:text/html;charset=utf-8');$online_log='count.txt';//保存在线人数数据的文件,$timeout=60;//60秒内没有动作,则是掉线@$entries=file($online_log);//将文件作为一个数组返回,数组中的每个单元都是文件中相应的一行,包括换行符在内$temp=array();if($entries){for($i=0;$i<count($entries);$i++){$entry=explode(',',trim($entries[$i]));if(($entry[0]!=getenv('REMOTE_ADDR'))&&($entry[1]>time())){array_push($temp,$entry[0].','.$entry[1].'n');//取出其他浏览者的信息,并去掉超时者,保存进$temp}}}array_push($temp,getenv('REMOTE_ADDR').','.(time()+($timeout))."\n");//更新浏览者的时间$users_online=count($temp);//计算在线人数$entries=implode('',$temp);//写入文件$fp=fopen($online_log,'w');flock($fp,LOCK_EX);//注意flock()不能在NFS以及其他的一些网络文件系统中正常工作fputs($fp,$entries);flock($fp,LOCK_UN);fclose($fp);echo'当前有'.$users_online.'人在线';?>使用这段代码如果需要外部文件调用输出结果的话,就需要判断下count.txt里面的数组数量了,例如:$count=file_get_contents('count.txt');$jmk=substr_count($count,'n');echo'当前有'.$jmk.'人在线';当然,这只是一个示例代码,更多方法还需自己慢慢探索,学习的乐趣不就是这样吗?

    • PHP代码
    • 97阅读
    • 2022-07-01

站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。