搜索
首页后端开发php教程PHP实现Token的实例方法
PHP实现Token的实例方法May 14, 2018 am 09:22 AM
phptoken方法

本文主要和大家分享PHP实现Token的实例方法希望能帮助到大家。

public function set_token($user_name){
    $information ['state'] = false;    $time = time();    $header = array(        'typ' => 'JWT'
    );    $array = array(        'iss' => 'auth', // 权限验证作者
        'iat' => $time, // 时间戳
        'exp' => 3600, // token有效期,1小时
        'sub' => 'demo', // 案例
        'user_name' => $user_name
    ) // 用户名
    ;    $str = base64_encode(json_encode($header)) . '.' . base64_encode(json_encode($array)); // 数组转成字符
    $str = urlencode($str); // 通过url转码
    $information ['token'] = $str;    $this->save_token($user_name, $information ['token']); // 将用户token存放进用户数据库
    $information ['username'] = $user_name; // 返回用户名
    $information ['state'] = true;    return $information;
}

注解:
1、函数save_token(),将用户当前的token保存在用户表里,用于校验
2、base64_encode与base64_decode加密解密函数
(1)加密:

$str='www.php.cn'; //定义字符串 
echo base64_encode($str);  // 输出编码后的内容为: d3d3LmpiNTEubmV0IOiEmuacrOS5i+Wutg==

(2)解密:

$str='d3d3LmpiNTEubmV0IOiEmuacrOS5i+Wutg==';     //定义字符串 
echo base64_decode($str); //输出解码后的内容

3、数组和对象,转换json格式,及反转
(1)json_encode()用来将数组和对象,转换为json格式:

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);  
echo json_encode($arr); 
结果为:
{"a":1,"b":2,"c":3,"d":4,"e":5}

(2)json_decode()用于将json文本转换为相应的PHP数据结构:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
结果就是生成一个PHP对象:
object(stdClass)#1 (5) {    
["a"] => int(1)    
["b"] => int(2)    
["c"] => int(3)    
["d"] => int(4)    
["e"] => int(5)  
} 

4、中文处理

echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+      //将中文文字转换成urlencode文字编码
echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.       //将urlencode文字编码转换成中文文字

           

public function set_token($user_name){
    $information ['state'] = false;    
    $time = time();    
    $header = array(        'typ' => 'JWT'
    );    $array = array(        'iss' => 'auth', // 权限验证作者
        'iat' => $time, // 时间戳
        'exp' => 3600, // token有效期,1小时
        'sub' => 'demo', // 案例
        'user_name' => $user_name
    ) // 用户名
    ;    
    $str = base64_encode(json_encode($header)) . '.' . base64_encode(json_encode($array)); // 数组转成字符
    $str = urlencode($str); // 通过url转码
    $information ['token'] = $str;    
    $this->save_token($user_name, $information ['token']); // 将用户token存放进用户数据库
    $information ['username'] = $user_name; // 返回用户名
    $information ['state'] = true;    return $information;
}

注解:
1、函数save_token(),将用户当前的token保存在用户表里,用于校验
2、base64_encode与base64_decode加密解密函数
(1)加密:

$str='www.jb51.net 脚本之家'; 
//定义字符串 echo base64_encode($str); 
 // 输出编码后的内容为: d3d3LmpiNTEubmV0IOiEmuacrOS5i+Wutg==

(2)解密:

$str='d3d3LmpiNTEubmV0IOiEmuacrOS5i+Wutg==';     
//定义字符串 echo base64_decode($str); //输出解码后的内容

3、数组和对象,转换json格式,及反转
(1)json_encode()用来将数组和对象,转换为json格式:

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);  
echo json_encode($arr); 
结果为:
{"a":1,"b":2,"c":3,"d":4,"e":5}

(2)json_decode()用于将json文本转换为相应的PHP数据结构:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
结果就是生成一个PHP对象:
object(stdClass)#1 (5) {    
["a"] => int(1)    
["b"] => int(2)    
["c"] => int(3)    
["d"] => int(4)    
["e"] => int(5)  
} 

4、中文处理

echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+      //将中文文字转换成urlencode文字编码
echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.       //将urlencode文字编码转换成中文文字

相关推荐:

微信开发Token验证失败解决方法

单例模式如何解决access_token全局缓存问题

PHP之微信公众号验证token、回复内容、推送消息的方法

以上是PHP实现Token的实例方法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

登录token无效怎么办登录token无效怎么办Sep 14, 2023 am 11:33 AM

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。详细介绍:1、检查Token是否过期,登录Token通常会设置有效期,一旦超过有效期,就会被认为无效等等。

登录token无效问题如何解决登录token无效问题如何解决Sep 14, 2023 am 10:57 AM

登录token无效问题可以通过检查网络连接、检查token有效期、清除缓存和Cookie、检查登录状态、联系应用程序开发者和加强账号安全来解决。详细介绍:1、检查网络连接,重新连接网络或者更换网络环境;2、检查token有效期,重新获取一个新的token,或者联系应用程序的开发者;3、清除缓存和Cookie,清除浏览器缓存和Cookie,然后重新登录应用程序;4、检查登录状态。

Redis存储用户token问题怎么解决Redis存储用户token问题怎么解决May 31, 2023 am 08:06 AM

Redis存储用户token在设计类似电商的系统时,一个常见的需求是每个页面都需要携带登录用户信息。常见的解决方法有两种:使用cookie保存使用JWT保存但如果系统中使用了Redis缓存,那么还可以有第三种解决方案–将用户token缓存在Redis中。登陆时生成一个token存入Redis//生成一个token对象,保存在redis中redisTemplate.opsForHash().put("token","user",user)

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

Vue3+Vite怎么使用双token实现无感刷新Vue3+Vite怎么使用双token实现无感刷新May 10, 2023 pm 01:10 PM

一、token登录鉴权jwt:JSONWebToken。是一种认证协议,一般用来校验请求的身份信息和身份权限。由三部分组成:Header、Hayload、Signatureheader:也就是头部信息,是描述这个token的基本信息,json格式{"alg":"HS256",//表示签名的算法,默认是HMACSHA256(写成HS256)"type":"JWT"//表示Token的类型,JWT令牌统一写为JWT}pa

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境