php判断网络协议请求类型是http还是https的方法如下:<?phpfunctiongetRequestType(){$type='http://';if(((isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']=='on')||(isset($_SERVER['HTTP_X_FORWARDED_PROTO'])&&$_SERVER['HTTP_X_FORWARDED_PROTO']=='https'))){$type='https://';}return$type;}?>条件太长不方便看可以这样:<?phpfunctiongetRequestType(){$type='http://';$term1=(isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']=='on')==true;$term2=(isset($_SERVER['HTTP_X_FORWARDED_PROTO'])&&$_SERVER['HTTP_X_FORWARDED_PROTO']=='https')==true;if($term1||$term2){$type='https://';}return$type;}?>你还可以这样:<?php$httpType=((isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']=='on')||(isset($_SERVER['HTTP_X_FORWARDED_PROTO'])&&$_SERVER['HTTP_X_FORWARDED_PROTO']=='https'))?'https://':'http://';?>如果是解析已有的url连接,方法如下:<?php$httpType=((isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']=='on')||(isset($_SERVER['HTTP_X_FORWARDED_PROTO'])&&$_SERVER['HTTP_X_FORWARDED_PROTO']=='https'))?'https://':'http://';?>如果是解析已有的url连接,方法如下:$httpType=strpos($url,'https://')!==false?'https://':'http://';
PHP生成随机数图片验证码,登录、注册、表单提交等图片验证码生成示例。业务流程示例:html页面img标签src属性里边编写生成图片验证码的url,调用生成图片验证码方法,然后把随机生成的验证码数字保存到session中,页面展示图片验证码,用户填写后再服务端接收用户填写的验证码和session中验证码对比,一致通过验证,不一致验证码匹配错误。以下是src中生成图片验证的示例:verifyCode();//调用方法/***生成随机数保存session调用验证码图片生成*/functionverifyCode(){//生成随机数$rand=rand(1000,9999);//把随机数保存到session中session_start();$_SESSION['verify_code']=$rand;session_write_close();//调用图片验证码imgCode($rand);}/***PHP生成图片验证码方法*/functionimgCode($strTxt='1234',$length=4,$width=100,$height=40){header("Content-type:text/html;charset=utf-8");header("Content-type:image/png");$strTxt=strval($strTxt);//先定义图片的长、宽$aimg=imagecreate($width,$height);//生成图片imagecolorallocate($aimg,255,255,255);//图片底色,imagecolorallocate第1次定义颜色php就认为是底色了//生成雪花背景for($i=1;$i<=200;$i++){//先用200个做测试imagestring($aimg,0,mt_rand(1,$width),mt_rand(1,$height),"*",imagecolorallocate($aimg,mt_rand(150,255),mt_rand(150,255),mt_rand(150,255)));//其实也不是雪花,就是生成*号而已。为了使它们看起来"杂乱无章、5颜6色",//就得在1个1个生成它们的时候,让它们的位置、颜色,甚至大小都用随机数,rand()或mt_rand都可以完成。}//生成随机数显示到图片,位置、大小、颜色都用成随机数//为了区别于背景,这里的颜色不超过200,上面的不小于200for($i=0;$i<strlen($strTxt);$i++){imagestring($aimg,mt_rand(20,50),$i*$width/$length+mt_rand(1,5),mt_rand(1,$height/2),$strTxt[$i],imagecolorallocate($aimg,mt_rand(0,100),mt_rand(0,150),mt_rand(0,150)));}imagepng($aimg);//生成png格式imagedestroy($aimg);//释放与image关联的内存exit();}
判断是否来自手机移动端: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;}//脑残法,判断手机发送的客户端标志,兼容性有待提高。其中'MicroMessenger'是电脑微信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','MicroMessenger');//从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;}判断是否来自微信内置浏览器:functionisWeixin(){if(strpos($_SERVER['HTTP_USER_AGENT'],'MicroMessenger')!==false){returntrue;}else{returnfalse;}}
用php获取访问用户的设备代理信息,可以获取设备类型是移动端还是电脑端、设备的系统类型是windows还是linux等以及用的哪个浏览器甚至手机品牌等。以下源码获取终端设备是移动端还是电脑端,系统类型,浏览器类型为例:functiongetUserAgentInfo(){//获取user-agent$userAgent=empty($_SERVER['HTTP_USER_AGENT'])?'null':$_SERVER['HTTP_USER_AGENT'];//判断访问设备类型$regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|KFAPWI|mobile|";$regex_match.="htc|dopod|ipad|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";$regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";$regex_match.="symbian|smartphone|midp|wap|phone|windowsce|WindowsPhone|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";$regex_match.="jig\sbrowser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";$regex_match.=")/i";$device="PC";if(isset($_SERVER['HTTP_X_WAP_PROFILE'])orisset($_SERVER['HTTP_PROFILE'])orpreg_match($regex_match,strtolower($userAgent))){$device='M';}//判断访问系统$system="unknown";$ios_regex="/(iPhoneOS|iPad)/i";if(false!==stripos($userAgent,'Android')){$system="Android";}elseif(false!==stripos($userAgent,'WindowsPhone')){$system="WindowsPhone";}elseif(false!==stripos($userAgent,'WindowsNT')){$system="Windows";}elseif(preg_match($ios_regex,$userAgent)){$system="IOS";}elseif(false!==stripos($userAgent,'Mac')){$system="MacOS";}elseif(false!==stripos($userAgent,'Linux')){$system="Linux";}elseif(false!==stripos($userAgent,'Unix')){$system="Unix";}//判断访问客户端$client="unknown";$ie_regex="/(MSIE|Trident)/i";if(stripos($userAgent,'MicroMessenger')){$client="WeiXin";}elseif(stripos($userAgent,'AlipayClient')){$client="Alipay";}elseif(stripos($userAgent,'QQTheme')){$client="QQ";}elseif(stripos($userAgent,'HeyTapBrowser')){$client="HeyTap";}elseif(stripos($userAgent,'VivoBrowser')){$client="Vivo";}elseif(stripos($userAgent,'MQQBrowser')){$client="QQ浏览器移动端";}elseif(stripos($userAgent,'MQQBrowser')){$client="QQ浏览器";}elseif(stripos($userAgent,'baiduboxapp')){$client="百度app";}elseif(stripos($userAgent,'weibo')){$client="WeiBo";}elseif(stripos($userAgent,'iqiyi')){$client="爱奇艺";}elseif(stripos($userAgent,'aweme')){$client="抖音";}elseif(stripos($userAgent,'kdtUnion_iting')){$client="喜马拉雅";}elseif(stripos($userAgent,'UCBrowser')){$client="UC";}elseif(stripos($userAgent,'DingTalk')){$client="钉钉";}elseif(stripos($userAgent,'SamsungBrowser')){$client="三星浏览器";}elseif(stripos($userAgent,'HUAWEIEVA')){$client="华为浏览器";}elseif(stripos($userAgent,'NokiaBrowser')){$client="诺基亚浏览器";}elseif(stripos($userAgent,'Opera')){$client="欧朋浏览器";}elseif(stripos($userAgent,'Firefox')){$client="火狐浏览器";}elseif(stripos($userAgent,'Chrome')){$client="谷歌";}elseif(stripos($userAgent,'Safari')){$client="苹果浏览器";}elseif(preg_match($ie_regex,$userAgent)){$client="IE";}returnArray('device'=>$device,'system'=>$system,'client'=>$client);}
当在调试代码和代码优化时通过计算程序运行时间以及内存开销是很有必要的,通过microtime()函数可以获得时间戳的微秒数,通过memory_get_usage()函数可以获得系统分配的内存大小。函数讲解microtime(get_as_float)函数返回当前Unix时间戳的微秒数,get_as_float可选,当设置为TRUE时,规定函数返回浮点数,FALSE则返回字符串,默认为FALSE。示例:echomicrotime()//0.991549001595469500echomicrotime(true)//1595469500.9915memory_get_usage(real_usage)函数返回分配给PHP的内存量,单位是字节(byte)。real_usage如果设置为TRUE获取系统分配总的内存尺寸,包括未使用的页。如果设置为FALSE报告实际使用的内存量,默认为FALSE。示例:echomemory_get_usage();//362280echomemory_get_usage(true);//2097152函数应用/***程序运行计算*/functionrunExpend($param=array()){if(!$param){returnarray('startTime'=>microtime(true),'startRam'=>memory_get_usage());}returnarray('times'=>round((microtime(true)-$param['startTime']),3).'s','ram'=>round((memory_get_usage()-$param['startRam'])/1024,2).'kb');}//第一次调用自动设置初始值$runParam=runExpend();//业务程序代码块-startfor($i=0;$i<100000000;$i++){$i;}//业务程序代码块-end//第二次调用并给予第一次的返回值$runVar=runExpend($runParam);//打印结果print_r($runVar);打印内容示例:Array([times]=>1.659s[ram]=>0.29kb)
以开头三位结尾四位显示,中间四位隐藏的格式为例(131****6789):方法一、字符串截取法,就是substr截取前三位,中间拼接四个*符号,后边再拼接上substr截取的后四位,示例:<?php$mobile='13123456789';$newMobile=substr($mobile,0,3).'****'.substr($mobile,-4);echo$newMobile;?>方法二、把字符串的一部分替换为另一个字符串,示例:<?php<?php$mobile='13123456789';$newMobile=substr_replace($mobile,'****',3,4);echo$newMobile;?>方法三、用正则表达式,示例:<?php$mobile='13123456789';$newMobile=preg_replace('/(\d{3})\d{4}(\d{4})/','$1****$2',$mobile);echo$newMobile;?>
6月26日11时许,辽宁沈阳一餐馆发生爆炸,现场烟尘滚滚。据浑南区委宣传部消息,初步怀疑为液化气罐爆炸。造成1人轻微伤,事故原因正在调查中。除昨日辽宁发生的爆炸事故自6月以来全国多地发生燃气爆炸事故造成6死72伤湖南长沙6月1日6时许,湖南长沙一早餐店发生火灾并引发燃爆事故。造成13人受伤,1人死亡。内蒙古呼和浩特6月19日17时许,内蒙古呼和浩特某小区一住户发生疑似燃气爆燃事故,造成2人轻伤。山东泰安6月21日上午,山东泰安一门头房因液化气罐泄漏引发爆炸事故。造成13人受伤,其中3人经抢救无效死亡。天津宝坻6月21日16时许,天津宝坻一施工现场,因违规施工造成燃气泄漏,引发爆炸事故,造成23人受伤。吉林通化6月21日18时许,吉林通化某小区4楼发生一起厨房煤气罐爆炸事故,共造成4人受伤。河北三河6月24日9时许,河北三河一商户发生液化石油气瓶燃爆事故。造成22人受伤,其中2人经抢救无效死亡。触目惊心的爆炸现场为我们敲响了警钟如何才能做到安全用气?应急管理部消防救援局近日发布燃气使用安全九提示夏季易发生燃气泄漏爆炸事故使用燃气要注意以下事项↓↓↓燃气使用安全九提示01购买选用合格的燃气灶、胶管、气瓶、调压阀等,使用带熄火保护功能的灶具。02不擅自改动、改装燃气管线、灶具等设施,更换气瓶要与管线连接牢靠,并检查是否漏气。03不包裹燃气表、热水器等燃气设施及附属管道,不在燃气设施上捆绑、悬挂物品,以免影响密封效果。04使用燃气的房间应打开门窗保持通风,做饭、烧水时要有人照看,避免汤水沸溢造成火灭漏气。05使用完燃气后,应关闭气瓶阀门、管道与软管连接阀门和灶具开关。06应经常检查厨房燃气胶管是否有老化、松脱现象,发现异常要及时联系专业人员进行维修、更换。07发现燃气泄漏时,要迅速关闭气源,打开门窗通风,不触动电器开关,不使用打火机等明火进行燃气泄漏检查。08建议安装燃气自动报警和自动切断装置,及时发现和处置燃气泄漏事故。09遇到任何燃气安全事故,要迅速远离危险位置,联系燃气公司和物业,严重的拨打“119”电话报警求助。企业发生燃气泄漏的主要原因是什么?燃气着火又该怎么办?上下滑动,查收这份企业燃气安全知识卡↓↓↓看到这里相信大家对燃气泄漏的简单处置也有了一些了解来源:应急管理部中国消防新疆消防
<?phpfunctionisMobile(){$useragent=isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:'';$useragent_commentsblock=preg_match('|\(.*?\)|',$useragent,$matches)>0?$matches[0]:'';functionCheckSubstrs($substrs,$text){foreach($substrsas$substr)if(false!==strpos($text,$substr)){returntrue;}returnfalse;}$mobile_os_list=array('GoogleWirelessTranscoder','WindowsCE','WindowsCE','Symbian','Android','armv6l','armv5','Mobile','CentOS','mowser','AvantGo','OperaMobi','J2ME/MIDP','Smartphone','Go.Web','Palm','iPAQ');$mobile_token_list=array('Profile/MIDP','Configuration/CLDC-','160×160','176×220','240×240','240×320','320×240','UP.Browser','UP.Link','SymbianOS','PalmOS','PocketPC','SonyEricsson','Nokia','BlackBerry','Vodafone','BenQ','Novarra-Vision','Iris','NetFront','HTC_','Xda_','SAMSUNG-SGH','Wapaka','DoCoMo','iPhone','iPod');$found_mobile=CheckSubstrs($mobile_os_list,$useragent_commentsblock)||CheckSubstrs($mobile_token_list,$useragent);if($found_mobile){returntrue;}else{returnfalse;}}//执行函数if(isMobile()){echo'shouji';}else{echo'diannao';}
PHP中以下值得计算结果为false:关键字booleanfalse整型intteger0浮点型double0.0字符串string“”字符串string“0”数组arrayarray()对象object空对象php《5nullnullNULL例如字符串"0":<?php$number="0";if($number){echo"string\"0\"isnotfalse\r\n";}else{echo"string\"0\"isfalse\r\n";//输出:string"0"isfalse}if(empty($number)){echo"string\"0\"isfalse\r\n";//输出:string"0"isfalse}else{echo"string\"0\"isnotfalse\r\n";}空数组:<?php$arr=array();if($arr){echo'array$arrisnotfalse'."\r\n";}else{echo'array$arrisfalse'."\r\n";//输出:array$arrisfalse}if(empty($arr)){echo'array$arrisfalse'."\r\n";//输出:array$arrisfalse}else{echo'array$arrisnotfalse'."\r\n";}空对象在PHP5以上版本中计算结果不为false:$obj=(object)array();if($obj){echo'$objisnotfalse'."\r\n";//输出:$objisnotfalse}else{echo'$objisfalse'."\r\n";}if(empty($obj)){echo'$objisfalse'."\r\n";}else{echo'$objisnotfalse'."\r\n";//输出:$objisnotfalse}注意:字符串"0.0"、字符串"00"、包括一个空格字符的字符串""、字符串"false"、整型-1都不为false:<?php$number="0.0";if($number){echo"string\"0.0\"isnotfalse\r\n";//输出:string"0.0"isnotfalse}else{echo"string\"0.0\"isfalse\r\n";}if(empty($number)){echo"string\"0.0\"isfalse\r\n";}else{echo"string\"0.0\"isnotfalse\r\n";//输出:string"0.0"isnotfalse}正确地检查一个变量是否为空应该使用:<?phpif(empty($var)){...}
代码如下:<?php/***获取当天是本月的第几周*不是我写的*/$wk_day=date('w');//今天周几$day=date('d');//今天几号$week=array('日','一','二','三','四','五','六');//规范化周日的表达$d=ceil($day/7);//计算是第几个星期几$str=date("Y年n月j日")."星期".$week[$wk_day]."<br>本月第".$d."个星期".$week[$wk_day];echo"$str";