当前位置:首页 > PHP > 正文内容

验证php session id 是否有效,验证默认的PHP会话ID值

高老师4年前 (2020-10-30)PHP1156

我最近需要验证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的配置会动态变更,另外定义的各种字母后期会发生变化,对应的场景基本不存在

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/173.html

分享给朋友:

“验证php session id 是否有效,验证默认的PHP会话ID值” 的相关文章

cookie中文乱码,GBK下

cookie中文乱码,GBK下

上家公司开发医院挂号系统,系统采用GBK编码。ajax发送的中文用户名让PHP保存为cookie出现乱码的解决方案。1.Javascript变量var user=document.getElementById('user').innerText; user=escape(u...

PHP对象转数组

PHP对象转数组

function objtoarr($obj){ $ret = array(); foreach($obj as $key =>$value){ if(gettype($value) == 'arr...

php抽奖概率算法

php抽奖概率算法

<?php /*  *算法学习自百度.只是学习和记录  */ header("Content-type:text/html;charset=utf-8"); //1.设置奖项,id是奖项id,name是中奖名称,v是中奖概率 $arr =&n...

【一】PHP多进程学习-简单创建父子进程.理解父子进程运行流程

【一】PHP多进程学习-简单创建父子进程.理解父子进程运行流程

(1).学习的目标:学会创建父子进程,并且能够区分当前进程是父还是子;了解父进程执行过程,子进程执行过程;能够用多进程执行任务(2).相关函数学习:    (2.1)pcntl_fork()执行时:       &nbs...

PHP getenv函数和putenv函数的学习

PHP getenv函数和putenv函数的学习

(1).在PHP中可以查看的环境变量包括: (1.1).电脑环境变量 (2.1).服务器环境变量(2).getenv()函数获取一个环境变量的值.参数1是环境变量的key,参数2值为true的时候仅从你的电脑环境变量中查找,参数2值为false会从两种变量中全部查询//获取我电脑登录的用户名,输出A...

php异步信号处理

php异步信号处理

php7.1引入了PHP异步信号处理函数pcntl_async_signals() 来处理阻塞问题。在php7之前信号处理方式有2种,第一种是基于ticks来每执行一行代码来触发执行信号监听,第二种是直接while(true){  //监听信号 }第一种方式如果某行的代码阻塞时间较长会影响...