首页
关于
留言
友链
电台
壁纸
我的足迹
推荐
知易而行MCP
Search
1
乐橙CMS影视管理系统最全版本
109,325 阅读
2
VIP视频解析破解电影解析模拟破解影视解析
77,802 阅读
3
乐橙CMS影视管理系统4.0.18版本
16,941 阅读
4
新浪图片链接修复教程集合
15,129 阅读
5
反调试代码调试死机代码禁止F12代码
12,103 阅读
语言
PHP
Java
Go
JavaScript
CSS
Vue
资源教程
网络杂谈
技术文章
影视交流
软件工具
Mac
知易而行
登录
Search
标签搜索
PHP
AI
LINUX
微信
MYSQL
树莓派
OpenClaw
ESP32S3
小智AI
P2P
JS
破解
乐橙cms
支付
uniapp
人工智能
技术趋势
智能玩具
ESP32
DIY
子沐~
累计撰写
128
篇文章
累计收到
372
条评论
首页
栏目
语言
PHP
Java
Go
JavaScript
CSS
Vue
资源教程
网络杂谈
技术文章
影视交流
软件工具
Mac
知易而行
页面
关于
留言
友链
电台
壁纸
我的足迹
推荐
知易而行MCP
搜索到
59
篇与
的结果
2019-11-22
免费p2p加速播放器m3u8播放器开源免费
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>DPlayer with hls.js engine and P2P demo</title> <script src="../node_modules/p2p-media-loader-core/build/p2p-media-loader-core.js"></script> <script src="../build/p2p-media-loader-hlsjs.js"></script> <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/p2p-dplayer@latest/dist/DPlayer.min.css"> <script src="https://cdn.jsdelivr.net/npm/dplayer@latest"></script> <style> #dplayer { width: 720px; margin-left: auto; margin-right: auto; display: block; } </style> </head> <body> <div id="dplayer"></div> <script> if (Hls.isSupported() && p2pml.hlsjs.Engine.isSupported()) { window.dp = new DPlayer({ container: document.getElementById("dplayer"), video: { url: "https://akamai-axtest.akamaized.net/routes/lapd-v1-acceptance/www_c4/Manifest.m3u8", type: "customHls", customType: { "customHls": function (video, player) { const engine = new p2pml.hlsjs.Engine(); const hls = new Hls({ liveSyncDurationCount: 7, // To have at least 7 segments in queue loader: engine.createLoaderClass() }); p2pml.hlsjs.initHlsJsPlayer(hls); hls.loadSource(video.src); hls.attachMedia(video); } } } }); } else { document.write("Not supported :("); } </script> </body> </html>
2019年11月22日
5,006 阅读
5 评论
0 点赞
2019-09-29
卸载阿里云、腾讯云服务器监控系统教程,防止被监控
众所周知,阿里云、腾讯云的服务器都自带监控(AliYunDun/阿里云盾/安骑士教程),大家都不想自己的所作所为都被监控着,比如我在上面安装SS服务,一旦云监控查到,会被警告,很麻烦,我们总想着自己买的东西能够完全自己做主,所以我们需要让他的监控失效,卸载监控!第一步:SSH连接阿里云服务器,在终端中输入下方命令,进行卸载AliYunDun操作wget chmod +x uninstall.sh ./uninstall.sh wget chmod +x quartz_uninstall.sh ./quartz_uninstall.sh第三步:继续删除阿里云盾残留iptables -I INPUT -s 140.205.201.0/28 -j DROP iptables -I INPUT -s 140.205.201.16/29 -j DROP iptables -I INPUT -s 140.205.201.32/28 -j DROP iptables -I INPUT -s 140.205.225.192/29 -j DROP iptables -I INPUT -s 140.205.225.200/30 -j DROP iptables -I INPUT -s 140.205.225.184/29 -j DROP iptables -I INPUT -s 140.205.225.183/32 -j DROP iptables -I INPUT -s 140.205.225.206/32 -j DROP iptables -I INPUT -s 140.205.225.205/32 -j DROP iptables -I INPUT -s 140.205.225.195/32 -j DROP iptables -I INPUT -s 140.205.225.204/32 -j DROP至此,以上步骤执行过后我们就将监控卸载完毕了。至于腾讯云,操作方法也一样。第一步:在默认安装系统的时候不要勾选安全云镜和安全监控软件第二步:如果安装了监控软件后如何卸载,操作如下:/usr/local/qcloud/stargate/admin/uninstall.sh /usr/local/qcloud/YunJing/uninst.sh /usr/local/qcloud/monitor/barad/admin/uninstall.sh
2019年09月29日
2,397 阅读
1 评论
0 点赞
2019-09-19
绕过腾讯网址检测相关代码,过滤腾讯网址检测IP
代码如下<?php //IP屏蔽 $iptables='977012992~977013247|977084416~977084927|1743654912~1743655935|1949957632~1949958143|2006126336~2006127359|2111446272~2111446527|3418570752~3418578943|3419242496~3419250687|3419250688~3419275263|3682941952~3682942207|3682942464~3682942719|3682986660~3682986663|1707474944~1707606015|1709318400~1709318655|1884967642|1884967620|1893733510|1709332858|1709325774|1709342057|1709341968|1709330358|1709335492|1709327575|1709327041|1709327557|1709327573|1975065457|1902908741|1902908705|3029946827|3070488320~3070488574|1902905856~1902906110'; $remoteiplong=bindec(decbin(ip2long(real_ip()))); foreach(explode('|',$iptables) as $iprows){ if($remoteiplong==$iprows)exit(pr_html('欢迎使用!')); $ipbanrange=explode('~',$iprows); if($remoteiplong>=$ipbanrange[0] && $remoteiplong<=$ipbanrange[1]) exit(pr_html('欢迎使用!')); } //HEADER特征屏蔽 if(preg_match("/manager/", strtolower($_SERVER['HTTP_USER_AGENT'])) || strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla')===false && strpos($_SERVER['HTTP_USER_AGENT'], 'ozilla')!==false || isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'urls.tr.com')!==false || isset($_COOKIE['ASPSESSIONIDQASBQDRC']) || empty($_SERVER['HTTP_USER_AGENT']) || strpos($_SERVER['HTTP_USER_AGENT'], 'HUAWEI G700-U00')!==false && !isset($_SERVER['HTTP_ACCEPT']) || preg_match("/Alibaba.Security.Heimdall/", $_SERVER['HTTP_USER_AGENT'])) { exit(pr_html('欢迎使用!')); } if( strpos($_SERVER['HTTP_USER_AGENT'], '360Spider')!==false || strpos($_SERVER['HTTP_USER_AGENT'], 'haosouspider')!==false ) { exit(pr_html('欢迎使用!')); } if(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone OS 9_3_4')!==false && $_SERVER['HTTP_ACCEPT']=='*/*' || strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone OS 8_4')!==false && $_SERVER['HTTP_ACCEPT']=='*/*' || strpos($_SERVER['HTTP_USER_AGENT'], 'Android 6.0.1')!==false && strpos($_SERVER['HTTP_USER_AGENT'], 'MQQBrowser/6.8')!==false && $_SERVER['HTTP_ACCEPT']=='*/*' || strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'en')!==false && strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'zh')===false || strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone')!==false && strpos($_SERVER['HTTP_USER_AGENT'], 'en-')!==false && strpos($_SERVER['HTTP_USER_AGENT'], 'zh')===false) { exit(pr_html('您当前浏览器不支持或操作系统语言设置非中文,无法访问本站!')); } //if(preg_match("/Windows NT 6.1/", $_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_ACCEPT']=='*/*'|| preg_match("/Windows NT 5.1/", $_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_ACCEPT']=='*/*' || preg_match("/vnd.wap.wml/", $_SERVER['HTTP_ACCEPT']) && preg_match("/Windows NT 5.1/", $_SERVER['HTTP_USER_AGENT'])){ /*exit(pr_html('该设备太落后了,请更新设备!')); }*/ function pr_html($text){ ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="refresh" content="2;url=https://www.so.com/" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>正在进入,请稍等</title> </head> <body> <p><?php echo $text;?></p> </body> </html> <?php } ?>
2019年09月19日
2,178 阅读
0 评论
0 点赞
2019-04-28
新浪图片链接修复教程集合
前言前几天网友反馈新浪图床挂了,我还有点不信,直到最近事件扩散之后才发现的因为新浪图床开启了防盗链导致用户放在网站的新浪图片都失效了解决办法新浪图床开启的是最简单的防盗链,也就是来源非新浪域名都不加载,那么我们不带来源就行了。细讲:方案1、html的话,在head标签中加入<meta name="referrer" content="same-origin"> <meta name="referrer" content="no-referrer">方案2、img标签加referrerpolicy="no-referrer"(浏览器非兼容,自测)方案3、该域名前缀ww1,ww2,ww3,ws3,ws2,ws1为ws1,ws2,ws3(已和谐)方案4、https网站加载http的图片资源方案5、Nginx无来路add_header Referrer-Policy "no-referrer";请输入图片描述方案6、反代(缓存时间越高越好)请输入图片描述补充:https://ws3.sinaimg.cn/替换为域名地址:https://cdn.sinaimg.cn.52ecy.cn以上方法反代最稳妥,其他方案都存在浏览器兼容性问题,如有介意者自行抉择。站点统计会有所异常,如有介意者自行抉择感谢杨小杰
2019年04月28日
15,129 阅读
3 评论
0 点赞
2019-04-23
微信公众号对接网站实现自动回复搜索找电影关注自动回复
<?php header('Content-type:text'); define("TOKEN", "qingeedy"); $wechatObj = new wechatCallbackapiTest(); if (!isset($_GET['echostr'])) { $wechatObj->responseMsg(); }else{ $wechatObj->valid(); } class wechatCallbackapiTest{ //验证签名 public function valid(){ $echoStr = $_GET["echostr"]; $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode($tmpArr); $tmpStr = sha1($tmpStr); if($tmpStr == $signature){ echo $echoStr; exit; } } //响应消息 public function responseMsg(){ $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>"; //$postStr = 'huihui'; //调试用 if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $event = $postObj->Event; $RX_TYPE = trim($postObj->MsgType); // $RX_TYPE = "text";//gnagcai zhege meiqudiao //消息类型分离 switch ($RX_TYPE){ case "text": $result = $this->receiveText($postObj); break; case "image": $result = $this->receiveImage($postObj); break; case 'event': if($event == 'subscribe') { $contentStr = "欢迎关注"; $result = $this->receiveText2($postObj); } break; default: $result = "unknown msg type: ".$RX_TYPE; break; } echo $result; }else { echo "this i s failed"; exit; } } //接收文本消息 private function receiveText($object){ $a = ($object->Content); $keyword = trim($a);//关键字 $arr[] = array( "Title" =>"为您找到【".$keyword."】的所有搜索结果!", "Description" => "享受闲暇,不负好时光!点我查看 ☞", "PicUrl" => "https://app.qingee.net/weixin/img/sousou.png", "Url" => "http//he-ad.cn/?wd=".$keyword ); $result=""; if (is_array($arr)) { if (isset($arr[0])) { $result = $this->transmitNews($object, $arr); } } else { $result = $this->transmitText($object, $arr); } return $result; } //接收文本消息 private function receiveText2($object){ $a = ($object->Content); $keyword = trim($a);//关键字 $arr="欢迎关注我们,橙子网络"; $result=""; if (is_array($arr)) { if (isset($arr[0])) { $result = $this->transmitNews($object, $arr); } } else { $result = $this->transmitText($object, $arr); } return $result; } //接收图片消息 private function receiveImage($object){ $content = array("MediaId"=>$object->MediaId); $result = $this->transmitImage($object, $content); return $result; } //回复文本消息 private function transmitText($object, $content){ if (!isset($content) || empty($content)){ return ""; } $xmlTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time(), $content); return $result; } //回复图文消息 private function transmitNews($object, $newsArray){ if(!is_array($newsArray)){ return ""; } $itemTpl = "<item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item>"; $item_str = ""; foreach ($newsArray as $item){ $item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']); } $xmlTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>%s</ArticleCount> <Articles>$item_str</Articles> </xml>"; $result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time(), count($newsArray)); return $result; } //回复图片消息 private function transmitImage($object, $imageArray){ $itemTpl = "<Image> <MediaId><![CDATA[%s]]></MediaId> </Image>"; $item_str = sprintf($itemTpl, $imageArray['MediaId']); $xmlTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[image]]></MsgType> $item_str </xml>"; $result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time()); return $result; } } ?>
2019年04月23日
2,151 阅读
0 评论
0 点赞
2019-04-19
php多维数组排序
/** * 多维数组排序 * @param $multi_array * @param $sort_key * @param int $sort * @return array|bool */ function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC){ if(is_array($multi_array)){ foreach ($multi_array as $row_array){ if(is_array($row_array)){ $key_array[] = $row_array[$sort_key]; }else{ return false; } } }else{ return false; } array_multisort($key_array,$sort,$multi_array); return $multi_array; }
2019年04月19日
1,827 阅读
0 评论
0 点赞
2019-04-09
微信支付成功回调处理
public function wechatPayNotify() { $content = file_get_contents("php://input"); writeSomeLog('wxPayNotify',[$content]); libxml_disable_entity_loader(true); $content = json_decode(json_encode(simplexml_load_string($content, 'SimpleXMLElement', LIBXML_NOCDATA)), true); Log::write('微信回调信息:'.json_encode($content)); $orderCode = $content['out_trade_no']; $updateData['status']=5; $updateData['trade_no']=$content['transaction_id']; $updateData['pay_money']=$content['total_fee']/100; //处理支付成功的逻辑 if($content['return_code'] == 'SUCCESS') { Log::write('处理支付后回调逻辑'.$content['return_code']); //处理订单,检验订单是否为新订单,防止微信重复回调 $check=(new OrderService())->checkOrder($orderCode); if($check){ (new OrderService())->updateOrderStatus($orderCode,$updateData,$content); //发送消息 //(new OrderService())->sendMsg($orderCode); } } //回复微信 $wechatPayService = new WechatService(); $wechatPayService->notify(); }
2019年04月09日
2,066 阅读
0 评论
0 点赞
2019-04-04
调用支付宝扫一扫
//首先引入支付宝js <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> ap.scan({ type: 'qr' }, function (res) { if (res.error == 10) { // 错误码为10:用户取消操作 // ... } else if (res.error == 11) { // 错误码为11:扫码失败 alert('扫码失败,请重试') // .... } else { console.log(res.code); // res.code为扫码返回的结果 //alert(res.code); } )}
2019年04月04日
2,324 阅读
0 评论
0 点赞
2019-04-03
微信支付WeixinJSBridge.invoke的使用方法
//调起微信支付 function onBridgeReady(Data) { WeixinJSBridge.invoke( 'getBrandWCPayRequest', Data, function(res){ if(res.err_msg === "get_brand_wcpay_request:ok" ) { window.location.href ='&payStatus=ok'; }else { window.location.href ='&payStatus=cancel'; } } ); } //去支付 function toPay() { var amount=10; //页面展示为元 //商品信息 var shopCarGoodsInfo={ }; if(canClick){ canClick = false; $.post('toPay',{amount:amount,goods:shopCarGoodsInfo},function(res){ canClick = true; if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', function(){onBridgeReady(res);}, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', function(){onBridgeReady(res);}); document.attachEvent('onWeixinJSBridgeReady', function(){onBridgeReady(res);}); } }else{ onBridgeReady(res); } }); } }
2019年04月03日
4,530 阅读
0 评论
0 点赞
2019-04-03
【基础】你知道PHP7有哪些新特性吗?以下总结希望能帮到你
PHP 7使用新的Zend Engine 3.0将应用程序性能提高近两倍,内存消耗比PHP 5.6高出50%。它允许服务更多的并发用户,而不###需要任何额外的硬件。PHP 7是考虑到今天的工作负载而设计和重构的。PHP新功能总结*改进的性能 - 将PHPNG代码合并到PHP7中,速度是PHP 5的两倍。*降低内存消耗 - 优化的PHP 7使用较少的资源。*标量类型声明 - 现在可以强制执行参数和返回类型。*一致的64位支持 - 对64位体系结构机器的一致支持。*改进了异常层次 - 异常层次得到了改进*许多致命的错误转换为例外 - 例外范围增加,涵盖许多致命的错误转换为例外。*安全随机数发生器 - 增加新的安全随机数发生器API。*已弃用的SAPI和扩展已删除 - 各种旧的和不受支持的SAPI和扩展从最新版本中删除。*空合并运算符(?) - 添加了新的空合并运算符。*返回和标量类型声明 - 支持所添加的返回类型和参数类型。*匿名类 - 支持匿名添加。*零成本断言 - 支持零成本断言增加。标量类型声明在PHP 7中,引入了一个新的特性,即标量类型声明。标量类型声明有两个选项*强制 - 强制是默认模式,不需要指定。*严格 - 严格的模式已经明确暗示。功能参数的以下类型可以使用上述模式强制执行*float*int*bool*string*interfaces*array*callable强制模式<?php // Coercive mode function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); //9 ?>严格模式<?php // Strict mode declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); //Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, ... ?>返回类型声明有效的返回类型<?php declare(strict_types = 1); function returnIntValue(int $value): int { return $value; } print(returnIntValue(5)); ?>无效返回类型<?php declare(strict_types = 1); function returnIntValue(int $value): int { return $value + 1.0; } print(returnIntValue(5));//Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned. ?>空合并运算符在PHP 7中,引入了一个新的特性,即空合并运算符(??)。它用来替代与isset()函数结合的三元操作。该空如果它存在,而###不是空合并运算符返回第一个操作数; 否则返回第二个操作数。<?php // fetch the value of $_GET['user'] and returns 'not passed' // if username is not passed $username = $_GET['username'] ?? 'not passed'; print($username); print("<br/>"); // Equivalent code using ternary operator $username = isset($_GET['username']) ? $_GET['username'] : 'not passed'; print($username); print("<br/>"); // Chaining ?? operation $username = $_GET['username'] ?? $_POST['username'] ?? 'not passed'; print($username); // output //not passed ?>飞船运算符它用来比较两个表达式。当第一个表达式分别小于,等于或大于第二个表达式时,它返回-1,0或1。字符串比较ASCII//integer comparison print( 1 <=> 1);print("<br/>"); print( 1 <=> 2);print("<br/>"); print( 2 <=> 1);print("<br/>"); // output 0 -1 1常量数组使用define()函数定义数组常量。在PHP 5.6中,只能使用const关键字来定义它们。<?php //define a array using define function define('animals', [ 'dog', 'cat', 'bird' ]); print(animals[1]); // output cat ?>匿名类现在可以使用新类来定义匿名类。匿名类可以用来代替完整的类定义。<?php interface Logger { public function log(string $msg); } class Application { private $logger; public function getLogger(): Logger { return $this->logger; } public function setLogger(Logger $logger) { $this->logger = $logger; } } $app = new Application; $app->setLogger(new class implements Logger { public function log(string $msg) { print($msg); } }); $app->getLogger()->log("My first Log Message"); ?> //output My first Log MessageClosure类Closure :: call()方法被添加为一个简短的方式来临时绑定一个对象作用域到一个闭包并调用它。与PHP5的bindTo相比,###它的性能要快得多。在PHP 7之前<?php class A { private $x = 1; } // Define a closure Pre PHP 7 code $getValue = function() { return $this->x; }; // Bind a clousure $value = $getValue->bindTo(new A, 'A'); print($value()); //output 1 ?>PHP 7+<?php class A { private $x = 1; } // PHP 7+ code, Define $value = function() { return $this->x; }; print($value->call(new A)); //output 1 ?>过滤unserializePHP 7引入了过滤的unserialize()函数,以便在对不可信数据上的对象进行反序列化时提供更好的安全性。它可以防止可能###的代码注入,并使开发人员能够对可以反序列化的类进行白名单<?php class MyClass1 { public $obj1prop; } class MyClass2 { public $obj2prop; } $obj1 = new MyClass1(); $obj1->obj1prop = 1; $obj2 = new MyClass2(); $obj2->obj2prop = 2; $serializedObj1 = serialize($obj1); $serializedObj2 = serialize($obj2); // default behaviour that accepts all classes // second argument can be ommited. // if allowed_classes is passed as false, unserialize converts all objects into __PHP_Incomplete_Class object $data = unserialize($serializedObj1 , ["allowed_classes" => true]); // converts all objects into __PHP_Incomplete_Class object except those of MyClass1 and MyClass2 $data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]); print($data->obj1prop); print("<br/>"); print($data2->obj2prop); //output 1 2 ?>IntlChar在PHP7中,增加了一个新的IntlChar类,它试图揭示额外的ICU功能。这个类定义了一些静态方法和常量,可以用来处理###Unicode字符。在使用这个课程之前,你需要安装Intl扩展。<?php printf('%x', IntlChar::CODEPOINT_MAX); print (IntlChar::charName('@')); print(IntlChar::ispunct('!')); //output 10ffff COMMERCIAL AT true ?>CSPRNG在PHP 7中,引入了两个新的函数来以跨平台的方式生成密码安全的整数和字符串。*random_bytes() - 生成密码安全的伪随机字节。*random_int() - 生成密码安全的伪随机整数<?php $bytes = random_bytes(5); print(bin2hex($bytes)); //output 54cc305593 print(random_int(100, 999)); print(""); print(random_int(-1000, 0)); //output 614 -882 ?>使用声明从PHP7开始,可以使用单个use语句从相同的命名空间导入类,函数和常量,而不是使用多个use语句。<?php // Before PHP 7 use com\tutorialspoint\ClassA; use com\tutorialspoint\ClassB; use com\tutorialspoint\ClassC as C; use function com\tutorialspoint\fn_a; use function com\tutorialspoint\fn_b; use function com\tutorialspoint\fn_c; use const com\tutorialspoint\ConstA; use const com\tutorialspoint\ConstB; use const com\tutorialspoint\ConstC; // PHP 7+ code use com\tutorialspoint\{ClassA, ClassB, ClassC as C}; use function com\tutorialspoint\{fn_a, fn_b, fn_c}; use const com\tutorialspoint\{ConstA, ConstB, ConstC}; ?>整数部分PHP 7引入了一个新的函数intdiv(),它对它的操作数进行整数除法,并将除法运算返回为int。<?php $value = intdiv(10,3); var_dump($value); print(" "); print($value); //output int(3) 3 ?>会话选项session_start()函数接受来自PHP7 + 的一系列选项来覆盖php.ini中设置的会话配置指令。这些选项支持###session.lazy_write,默认情况下,它会导致PHP在会话数据发生更改时覆盖任何会话文件。添加的另一个选项是read_and_close,它表示应该读取会话数据,然后应该立即关闭会话。例如,将session.cache_limiter设置为private,并使用以下代码片段将标志设置为在读取完毕后立即关闭会话。<?php session_start([ 'cache_limiter' => 'private', 'read_and_close' => true, ]); ?>弃用PHP 4样式构造函数是与它们定义的类具有相同名称的方法,现在已被弃用,并且将来将被删除。如果PHP 4的构造函数是类中定###义的唯一构造函数,则PHP 7将发出E_DEPRECATED。实现__construct()方法的类不受影响。<?php class A { function A() { print('Style Constructor'); } } ?>对非静态方法的静态调用已被弃用,并可能在将来被删除<?php class A { function b() { print('Non-static call'); } } A::b(); // Deprecated: Non-static method A::b() should not be called statically in...Non-static call ?>错误处理从PHP 7开始,错误处理和报告已经改变。而不是通过PHP 5使用的传统错误报告机制来报告错误,现在大多数错误都是通过抛出###错误异常来处理的。与异常类似,这些错误异常会一直冒泡,直到它们到达第一个匹配的catch块。如果没有匹配的块,则使用###set_exception_handler()安装的默认异常处理程序将被调用。如果没有默认的异常处理程序,那么异常将被转换为致命错误,并将像传统的错误一样处理。由于错误层次结构不是从Exception扩展的,所以使用catch(Exception $ e){...}块来处理PHP 5中未捕获的异常的代码将###不会处理这样的错误。catch(Error $ e){...}块或set_exception_handler()处理程序是处理致命错误所必需的。<?php class MathOperations { protected $n = 10; // Try to get the Division by Zero error object and display as Exception public function doOperation(): string { try { $value = $this->n % 0; return $value; } catch (DivisionByZeroError $e) { return $e->getMessage(); } } } $mathOperationsObj = new MathOperations(); print($mathOperationsObj->doOperation()); // output Modulo by zero ?>
2019年04月03日
1,855 阅读
0 评论
0 点赞
1
...
3
4
5
6