方法一(完全随机颜色):<?phpfunctionrandColor(){$colors=array();for($i=0;$i<6;$i++){$colors[]=dechex(rand(0,15));}returnimplode('',$colors);}?><?phpecho'<spanstyle="color:#'.randColor().'">#'.randColor().'</span>';?>方法二(取现有数组中颜色代码进行随机):<?phpfunctionrandColor(){$colors=array('5CB85C','428BCA','FF6600','D9534F','B37333','00ABA9');//随机数组中颜色代码$show_color=array_rand($colors,1);return$colors[$show_color];}?><?phpecho'<spanstyle="color:#'.randColor().'">#'.randColor().'</span>';?>
一般会有些无聊的用户无意义的频繁刷新或者cc攻击请求都会给服务器加重很多负担其实用cookie就可以防止这一点如果频繁刷新或者cc攻击都会跳转到你设置的那个网址的例如设置存活5/s一次每5秒只可以请求一次也就是只能刷新一次如果超过了两次那么会直接跳转到你设置的网址代码可以加到你需要防止的文件也不是完美的只是个学习代码学习学习就好<?phperror_reporting(0);//if($_COOKIE["ck"])die("刷新过快!");if($_COOKIE["ck"])header("Location:https://www.bingdou.net");//这里如果用户刷新过快,给予终止php脚本或者直接302跳转setcookie("ck","1",time()+5);//设定cookie存活时间5secho"hello!";?>
一般我们在WEB端新注册或者登陆账户的时候,对于字段的验证不仅仅是需要验证其是否为空或者长度,有些特殊的字段,比如EMAIL邮箱我们需要验证是不是邮箱的格式,比如是都带有@符号等。刚才在练习PHP程序脚本制作会员注册功能的时候用到邮箱账户验证正则表达,可以适当的过滤邮箱的规则。这里可以使用到2种方法,一种是用preg_match进行验证,一种是用JS判断。第一、PHP方法preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email);使用方法:<?phpfunctionisEmail($email){if(preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email)){return'是邮箱';}else{return'不是邮箱';}}?>或者直接用IF判断:if(!preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email)){exit('错误:电子邮箱格式错误。<ahref="javascript:history.back(-1);">返回</a>');}第二、JS判断方法myreg=/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/;使用方法:<scripttype="text/javascript">functionisEmail(val){varmyreg=/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/;if(!myreg.test(val))return'不是邮箱';return'是邮箱';};alert(isEmail('i@julying.com'));</script>以上PHP和JS两种方法,根据我们实际的需要和项目使用,老蒋这里用了第一种方法。
<?php/***检测文件的真实类型*@paramstring$srcPath文件路径*@returnstring$realType文件真实类型*/$imgurl='https://ae01.alicdn.com/kf/HTB1w5xdS4TpK1RjSZR0762EwXXa7.png';echofile_type_detect($imgurl);functionfile_type_detect($srcPath){$types=array(6677=>'bmp',7173=>'gif',7368=>'mp3',13780=>'png',255216=>'jpg',);$binary=curl_get($srcPath);$bytes=substr($binary,0,2);$head=@unpack('C2char',$bytes);$typeCode=intval($head['char1'].$head['char2']);$realType=isset($types[$typeCode])?$types[$typeCode]:$typeCode;return$realType;}functioncurl_get($url){$ch=curl_init($url);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0(Linux;U;Android4.4.1;zh-cn;R815TBuild/JOP40D)AppleWebKit/533.1(KHTML,likeGecko)Version/4.0MQQBrowser/4.5MobileSafari/533.1');curl_setopt($ch,CURLOPT_TIMEOUT,10);$content=curl_exec($ch);curl_close($ch);return($content);}
$str=preg_replace("/\s+/","",$str);//过滤多余回车$str=preg_replace("/<[]+/si","<",$str);//过滤<__("<"号后面带空格)$str=preg_replace("/<\!–.*?–>/si","",$str);//注释$str=preg_replace("/<(\!.*?)>/si","",$str);//过滤DOCTYPE$str=preg_replace("/<(\/?html.*?)>/si","",$str);//过滤html标签$str=preg_replace("/<(\/?head.*?)>/si","",$str);//过滤head标签$str=preg_replace("/<(\/?meta.*?)>/si","",$str);//过滤meta标签$str=preg_replace("/<(\/?body.*?)>/si","",$str);//过滤body标签$str=preg_replace("/<(\/?link.*?)>/si","",$str);//过滤link标签$str=preg_replace("/<(\/?form.*?)>/si","",$str);//过滤form标签$str=preg_replace("/cookie/si","COOKIE",$str);//过滤COOKIE标签$str=preg_replace("/<(applet.*?)>(.*?)<(\/applet.*?)>/si","",$str);//过滤applet标签$str=preg_replace("/<(\/?applet.*?)>/si","",$str);//过滤applet标签$str=preg_replace("/<(style.*?)>(.*?)<(\/style.*?)>/si","",$str);//过滤style标签$str=preg_replace("/<(\/?style.*?)>/si","",$str);//过滤style标签$str=preg_replace("/<(title.*?)>(.*?)<(\/title.*?)>/si","",$str);//过滤title标签$str=preg_replace("/<(\/?title.*?)>/si","",$str);//过滤title标签$str=preg_replace("/<(object.*?)>(.*?)<(\/object.*?)>/si","",$str);//过滤object标签$str=preg_replace("/<(\/?objec.*?)>/si","",$str);//过滤object标签$str=preg_replace("/<(noframes.*?)>(.*?)<(\/noframes.*?)>/si","",$str);//过滤noframes标签$str=preg_replace("/<(\/?noframes.*?)>/si","",$str);//过滤noframes标签$str=preg_replace("/<(i?frame.*?)>(.*?)<(\/i?frame.*?)>/si","",$str);//过滤frame标签$str=preg_replace("/<(\/?i?frame.*?)>/si","",$str);//过滤frame标签$str=preg_replace("/<(script.*?)>(.*?)<(\/script.*?)>/si","",$str);//过滤script标签$str=preg_replace("/<(\/?script.*?)>/si","",$str);//过滤script标签$str=preg_replace("/javascript/si","Javascript",$str);//过滤script标签$str=preg_replace("/vbscript/si","Vbscript",$str);//过滤script标签$str=preg_replace("/on([a-z]+)\s*=/si","On\\1=",$str);//过滤script标签$str=preg_replace("/&#/si","&#",$str);//过滤script标签
CP站经常会遇到域名红名问题,在移动端不管是QQ还是微信如果打开被拦截是一件很麻烦的事情。那么怎么有效的避免这个问题?很多小伙伴说域名能抗红?但是有没有想过域名抗洪的机制是什么?没有相关程序,没有NB的DNS,没有正规的IP地址怎么抗?别再花冤枉钱了。不花冤枉钱,也能有效的避免域名被红问题。今天分享一段QQ内打开网址提示跳转到浏览器的代码,思路给了,就看怎么实现:<?php$conf['qqjump']=1;if(strpos($_SERVER['HTTP_USER_AGENT'],'QQ/')!==false&&$conf['qqjump']==1){$a='http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];echo'<!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"/><title>请使用浏览器打开</title><scriptsrc="https://open.mobile.qq.com/sdk/qqapi.js?_bid=152"></script><scripttype="text/javascript">mqq.ui.openUrl({target:2,url:"'.$a.'"});</script></head><body>请使用浏览器打开</body></html>';exit;}?>
php通过rand()函数产生随机数,这个函数可以产生一个指定范围的数字 这段代码通过产生的随机数,随机选择图片<html><body><?phpsrand(microtime()*1000000);$num=rand(1,4);switch($num){case1:$image_file="/home/images/alfa.jpg";break;case2:$image_file="/home/images/ferrari.jpg";break;case3:$image_file="/home/images/jaguar.jpg";break;case4:$image_file="/home/images/porsche.jpg";break;}echo"RandomImage:<imgsrc=$image_file/>";?></body></html>方法二:<?$handle=opendir('./');//当前目录while(false!==($file=readdir($handle))){//遍历该php教程文件所在目录list($filesname,$kzm)=explode(".",$file);//获取扩展名if($kzm=="gif"or$kzm=="jpg"){//文件过滤if(!is_dir('./'.$file)){//文件夹过滤$array[]=$file;//把符合条件的文件名存入数组}}}$suiji=array_rand($array);//使用array_rand函数从数组中随机抽出一个单元?><imgsrc="<?=$array[$suiji]?>">方法三:<?php/***********************************************Filename:img.php*Author:freemouse*Usage:*<imgsrc=img.php>*<imgsrc=img.php?folder=images2/>***********************************************/if($_GET['folder']){$folder=$_GET['folder'];}else{$folder='/images/';}//存放图片文件的位置$path=$_SERVER['DOCUMENT_ROOT']."/".$folder;$files=array();if($handle=opendir("$path")){while(false!==($file=readdir($handle))){if($file!="."&&$file!=".."){if(substr($file,-3)=='gif'||substr($file,-3)=='jpg')$files[count($files)]=$file;}}}closedir($handle);$random=rand(0,count($files)-1);if(substr($files[$random],-3)=='gif')header("Content-type:image/gif");elseif(substr($files[$random],-3)=='jpg')header("Content-type:image/jpeg");readfile("$path/$files[$random]");?>方法四:<?php$url='images';$files=array();if($handle=opendir("$url")){while(false!==($file=readdir($handle))){if($file!="."&&$file!=".."){if(substr($file,-3)=='gif'||substr($file,-3)=='jpg')$files[count($files)]=$file;}}}closedir($handle);$random=rand(0,count($files)-1);readfile("$url/$files[$random]");?>
近期的项目中多了一个USDT虚拟币的币种,这类的币种后面都是多位小数位的,为了保持其精准度,不能进行四舍五入,所以也就只能使用PHP进行精准度测试了,项目的需求很简单,就是保留四位小数,如果是人民币的话,保留两位就可以了,从网上找了不少的PHP函数代码,均无法实现,最后还是直接在CSDN上找到一段较好使用的代码,直接贴上了。$value='555.09988';floor($value*100)/100;代码简单的很,上面的PHP代码是PHP保留两位且不进行四舍五入,如果想要保留四位而不进行四舍五入的话,把下面一行的两个100修改成10000就可以了,以此类推就好。
一个客户的站点是用PHP设计的,想要在网站的底部加一个来访客户的计数器,其实就是用户的PV累加,这样的功能其实早就已经过时了,不过有客户这样要求了,哪就简单来一段吧,这类的代码网站已经有太多成熟的代码了,直接拿来粘贴就可以使用,从网上找到的一段不错的PHP文本计数器,可以自已创建.TXT文本,每次打开站点之后,会在.TXT文本里面更新数值,也就是站点PV计数器了,代码如下:<?phpif(file_exists('count_file.txt')){$fil=fopen('count_file.txt',r);$dat=fread($fil,filesize('count_file.txt'));echo$dat+1;fclose($fil);$fil=fopen('count_file.txt',w);fwrite($fil,$dat+1);}else//www.zhansanjie.com{$fil=fopen('count_file.txt',w);fwrite($fil,1);echo'1';fclose($fil);}?>这样一个PHP文本计数器就做好了,我们只需要包含到需要的网页就可以了,如果想要更完善一些的话,可以手动建立count_file.txt文本,生成的代码里面就不要再判断count_file.txt文件了,直接读取count_file里面的数值就OK了,网上还有其它类似这样的计数器,其实都是蛮简单的,就几段代码就完事了。
今年做得最二的一个项目,两个数据表,需要将数据同时展示出来,从一开始的项目开发设计就做错了,因为是多人同时开发的项目,所以如果去大改的话,可能改动较大,所以在前台也只能合并两个数据表的数据了,最主要的还是两个数据表没有任何字段的关联,所以就只能想出一个办法,先循环出第一个表的数据,生成第一个二维数组,然后循环出第二个表的数据,生成第二个二维数组。然后再将两个二维数组合并同时输出。例子如下:$a=array(array("1","2"),array("3","4"));$b=array(array("a","b"),array("c","d"));两个从数据库中循环出来的内容,直接使用array_merge函数即可将其合并,如下:$c=array_merge($a,$b);print_r($c);打印出来的结果就是:Array([0]=>Array([0]=>1[1]=>2)[1]=>Array([0]=>3[1]=>4)[2]=>Array([0]=>a[1]=>b)[3]=>Array([0]=>c[1]=>d))使用函数合并是再简单不过的方法了,也便于理解,这种合并的方法,就是将$a数组追加到$b数组之后,形成一个新的二维数组。还有一种合并的方式,就是通过foreach循环来合并数组,如下:$a=array(array("1","2"),array("3","4"));$b=array(array("a","b"),array("c","d"));foreach($aas$key=>$vo){$list[]=array_merge($vo,$b[$key]);}print_r($list);打印出来的结果如下:Array([0]=>Array([0]=>1[1]=>2[2]=>a[3]=>b)[1]=>Array([0]=>1[1]=>2[2]=>a[3]=>b))看看这两种有什么区别,第一种是直接追加,第二种的结果是融合,使用该方法之后,就是在A数组中插入了B数组,看各种需要吧。最后将两个表的数据合并成一个二维数组之后,需要重新改变一下数组键值,也就是从0开始,直接使用array_values()函数即可。