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

1059 ℃

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://m.ipkd.cn/webs_2654.html

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

结合vuex封装axios方法
wordpress优化如何获取分类描述信息(term_description)
js如何实现阶乘(求1到50的阶乘)
织梦cms如何实现会员注册邮箱验证
帝国cms教程封面模板调用栏目别名