在php5.6以上版本可以使用…语法实现:
参数列表可以包含 …标记,表示该函数接受可变数量的参数。参数将作为数组传递给给定变量。
计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:整数、浮点数、字符串、布尔值、空值、变量
centos系统本身默认安装有python2.x,可通过 python –V 或 python –version 查看系统自带的python版本。有一些系统命令时需要用到python2,所以python2不能卸载。
<?php namespace utils; /** * */ class Jwt { public $KEY = 'hao'; /** * [返回 hash 加密后的字符串] * @param [type] $header [description] * @param [type] $payload [description] * @return [type] [description] */ private function hash_do($str, $type){ $algo = 'sha256'; if (strtoupper($type) == 'MD5'){ $algo = 'md5'; } else if(strtolower($type) == 'HAVAL'){ $algo = 'haval160,4'; } return hash($algo, $str); } /** * [create_token description] * @param [type] $header [description] * @param [type] $payload [description] * @return [type] [description] */ public function create_token($header, $payload){ if (!empty($header) && is_array($header) && (strtoupper($header['alg'])=='HS256' || strtoupper($header['alg'])=='MD5' || strtoupper($header['alg'])=='HAVAL') && !empty($payload)) { $h = base64_encode(json_encode($header)); $p = base64_encode(json_encode($payload)); $s = $this->hash_do($h . $p . md5($this->KEY), $header['alg']); $sign = $h. '.' . $p . '.' . $s; return $sign; } return null; } public function check_token($jwt){ if (empty($jwt)){ return false; } $tokens = explode('.', $jwt); if (count($tokens)!==3){ return false; } list($header64, $payload64, $sign) = $tokens; $header = json_decode(base64_decode($header64), TRUE); if (!isset($header['alg'])){ return false; } $s = $this->hash_do($header64 . $payload64 . md5($this->KEY), $header['alg']); if ($s !== $sign){ return false; } $payload = json_decode(base64_decode($payload64), TRUE); $time = time(); if (isset($payload['iat']) && $payload['iat'] > $time){ return false; } if (isset($payload['exp']) && $payload['exp'] < $time){ return false; } return true; } }
使用方式:
public function auth_token(){ $over = config('TOKEN_OVER_TIME'); // 生存时间 $time = time(); $time_over = $time + $over; $header = [ 'typ' => 'JWT', 'alg' => 'HS256' ]; $payload = [ 'iss' => 'admin_name', 'iat' => $time, 'exp' => $time_over, 'uid' => 12 ]; $j = new Jwt(); $sign = $j->create_token($header, $payload); return $sign; } public function check(){ $jwt = 'jwtxxxxxxxx'; $j = new Jwt(); $b = $j->check_token($jwt); dump($b); }