web建站教程
  1. 首页
  2. vuejs
  3. js
  4. 好玩
  5. seo教程
  6. 前端知识
  7. 百度echarts
  8. 更多
    php入门
    nodejs
    mockjs
    reactjs
    mysql
    wordpress
    织梦cms
    帝国cms
    git教程
    IT知识
    模板大全
    休息站

php生成不重复唯一标识 session_create_id()的用法

969 ℃
     

session_create_id()是php 7.1新增的函数,用来生成session id,低版本无法使用。下面给大家介绍一下session_create_id()的用法。

实现代码如下:

<?php
/**
 * PHP生成唯一RequestID类
 * Version: 1.0
 */
class RequestID{ // class start
  
  **
  * 生成唯一请求id
  * session_create_id 需要php7.1以上版本
  * @return String
  */
  public static function generateV7(){
    // 使用session_create_id()方法创建前缀
    $prefix = session_create_id(date('YmdHis'));
    // 使用uniqid()方法创建唯一id
    $request_id = strtoupper(md5(uniqid($prefix, true)));
    // 格式化请求id
    return self::format($request_id);
  }
  
  public static function generate(){
    // 创建前缀
    $prefix = self::create_guid(date('YmdHis'));
    // 使用uniqid()方法创建唯一id
    $request_id = strtoupper(md5(uniqid($prefix, true)));
    // 格式化请求id
    return self::format($request_id);
  }
  
  public static function create_guid($namespace = '') {  
    static $guid = '';
    $uid = uniqid("", true);
    $data = $namespace;
    $data .= $_SERVER['REQUEST_TIME'];
    $data .= $_SERVER['HTTP_USER_AGENT'];
    $data .= isset($_SERVER['LOCAL_ADDR'])?$_SERVER['LOCAL_ADDR']:$_SERVER['SERVER_ADDR'];
    $data .= isset($_SERVER['LOCAL_PORT'])?$_SERVER['LOCAL_PORT']:$_SERVER['SERVER_PORT'];
    $data .= $_SERVER['REMOTE_ADDR'];
    $data .= $_SERVER['REMOTE_PORT'];
    $hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));
    $guid = '{' . 
      substr($hash, 0, 8) .
      '-' .
      substr($hash, 8, 4) .
      '-' .
      substr($hash, 12, 4) .
      '-' .
      substr($hash, 16, 4) .
      '-' .
      substr($hash, 20, 12) .
      '}';
    return $guid;
  }
  
  /**
  * 格式化请求id
  * @param String $request_id 请求id
  * @param Array $format  格式
  * @return String
  */
  private static function format($request_id, $format='8,4,4,4,12'){
    $tmp = array();
    $offset = 0;
    $cut = explode(',', $format);
    // 根据设定格式化
    if($cut){
      foreach($cut as $v){
        $tmp[] = substr($request_id, $offset, $v);
        $offset += $v;
      }
    }
    // 加入剩余部分
    if($offset<strlen($request_id)){
      $tmp[] = substr($request_id, $offset);
    }
    return implode('-', $tmp);
  }
} // class end
 
// 生成10个请求id
for($i=0; $i<10; $i++){
 echo RequestID::generate().PHP_EOL.'<br>';
}

如何利用php函数去除字符串右侧第一个字符

php如何使用var_dump函数打印变量的类型和值

如何利用php函数做一个简单的自动裁剪图像功能

php语法如何查看哪些函数被禁用

php如何利用ord()函数将字符转ascii码

标签: php函数, session_create_id

上面是“php生成不重复唯一标识 session_create_id()的用法”的全面内容,想了解更多关于 php入门 内容,请继续关注web建站教程。

当前网址:https://ipkd.cn/webs_2654.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

当前位置: 网站首页 > php入门
本文共计1677个字,预计阅读时长12分钟
生活小工具,收录了80多款小工具
上一篇: 程序员正能量文案:乐观积极的治愈系文案,朋友圈满满向上动力句子
下一篇: Lunar组件如何利用I18n实现多语言功能
x 打工人ai神器