我最近需要验证PHP会话ID创建的值。经过一些研究,我意识到有两个与此值相关的有趣的php.ini配置设置:
session.sid_length是ID中的字符数 session.sid_bits_per_character控制使用的字符集。从手册上可以知道可能的值为 '4'(0-9,af),'5'(0-9,av)和'6'(0-9,az,AZ,“-”,“,”)
因此,要验证会话ID,我们需要创建一个正则表达式,以查找预期长度的正确字符集。
function isValidSessionId(string $sessionId): bool { $sidLength = ini_get('session.sid_length'); switch (ini_get('session.sid_bits_per_character')) { case 6: $characterClass = '0-9a-zA-z,-'; break; case 5: $characterClass = '0-9a-v'; break; case 4: $characterClass = '0-9a-f'; break; default: throw new \RuntimeException('Unknown value in session.sid_bits_per_character.'); } $pattern = '/^[' . $characterClass . ']{' . $sidLength . '}$/'; return preg_match($pattern, $sessionId) === 1; }
本篇文章学习自akrabat.com博客,不建议使用本方法验证,因为ini的配置会动态变更,另外定义的各种字母后期会发生变化,对应的场景基本不存在
常见的PHP优化方法,让PHP效率更高,抽空更新(很多都是学习网络上的方法,想深度理解建议学C语言。):字符串的输出最好使用单引号,不要使用双银行,否则PHP会去找是否存在变量需要解析大数组,对象,资源句柄使用完及时进行unset()能用系统函数解决的问题尽量不要使用正则表达式,虽然正则表达式逼格高...
1、允许单个域名访问指定某域名(http://client.runoob.com)跨域访问,则只需在http://server.runoob.com/server.php文件头部添加如下代码:header('Access-Control-Allow-Origin:http://client....
<?php //设置Cookies数组 setcookie('Datatype[a]', '1'); setcookie('Datatype[b]', '2'); set...
项目需要使用websocket推送最新订单,客户服务器非linux不支持swoole,因此使用原生,直接上代码(1).PHP服务端<?php ini_set('error_reporting', E_ALL ^ E_NOTICE); ini_set...
本篇文章不是讲解如何用.net开发自己的dll然后PHP通过com调用。主要记录PHP官方支持的DOTNET 基本语法如下:$obj = new DOTNET("assembly", "classname")a...
首先看看以下代码:代码1:<?php $a=0.1; $b=0.7; if($a+$b==0.8) { echo "1"; } else{ echo "2"; } ?>代码2:<?php &n...