div>
学习记录

1.首先注册码云账号以及安装git2.生成一个SSH密钥,并在码云设置3.在码云创建一个仓库,一个仓库就是一个项目这三步就不详细说了,基本看看官网都能解决。在正式开始前需要打开cmd进行全局设置gitconfig--globaluser.name"码云名字"gitconfig--globaluser.email"码云邮箱"(正式开始)1.打开cmd。进入本地项目文件夹执行gitinit代表本地初始化一个项目,会生成一个.git隐藏文件夹2.执行gitadd.gitadd.test.txt代表把本地项目所有文件放进缓存区,分别是全部文件和指定文件3.添加项目说明gitcommit-m"初次提交"4.指定仓库git地址gitremoteaddoriginhttps://gitee.com/****/****.git在第一次上传的时候需要指定git地址,后续更新的时候就不用了。git的配置文件会记录git的地址需要注意的是第一次设置仓库地址,会弹出密码登录验证,输入码云账号密码验证下就可以了。5.执行提交命令gitpush-uoriginmaster执行这条命令就可以成功提交,需要注意的是,如果你不是第一次提交,且你手动删除过码云仓库的文件,导致仓库文件和本地文件不匹配,就会报错需要强制上传gitpush-uoriginmaster-f加个-f就可以强制上传了。总结一下所用命令gitinit#初始化创建一个本地仓库gitadd.#当前文件夹下所有内容添加至本地仓库缓存区gitadd.test.txt#指定文件添加gitcommit-m"提交信息(备注)"gitpush-uoriginmaster#将本地仓库添加的内容上传至远程仓库gitpush-uoriginmaster-f#强行把本地文件覆盖远程仓库文件,例如:远程有10个文件,本地有一个文件,那么强制的后果就是仓库只剩本地仓库的一个文件。附两条参考链接码云的安装和配置git命令:全局设置用户名邮箱配置

PHP

<?phpfunctiongeturl($url){$headerArray=array("Content-type:application/json;","Accept:application/json");$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);$output=curl_exec($ch);curl_close($ch);$output=json_decode($output,true);return$output;}functionposturl($url,$data){$data=json_encode($data);$headerArray=array("Content-type:application/json;charset='utf-8'","Accept:application/json");$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($curl,CURLOPT_POST,1);curl_setopt($curl,CURLOPT_POSTFIELDS,$data);curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);$output=curl_exec($curl);curl_close($curl);returnjson_decode($output,true);}functionputurl($url,$data){$data=json_encode($data);$ch=curl_init();//初始化CURL句柄curl_setopt($ch,CURLOPT_URL,$url);//设置请求的URLcurl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-type:application/json'));curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//设为TRUE把curl_exec()结果转化为字串,而不是直接输出curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"PUT");//设置请求方式curl_setopt($ch,CURLOPT_POSTFIELDS,$data);//设置提交的字符串$output=curl_exec($ch);curl_close($ch);returnjson_decode($output,true);}functiondelurl($url,$data){$data=json_encode($data);$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$put_url);curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-type:application/json'));curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"DELETE");curl_setopt($ch,CURLOPT_POSTFIELDS,$data);$output=curl_exec($ch);curl_close($ch);$output=json_decode($output,true);}functionpatchurl($url,$data){$data=json_encode($data);$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-type:application/json'));curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"PATCH");curl_setopt($ch,CURLOPT_POSTFIELDS,$data);//20170611修改接口,用/id的方式传递,直接写在url中了$output=curl_exec($ch);curl_close($ch);$output=json_decode($output);return$output;}?>

2021-11-20 7 0
2021-9-16 74 0
2020-8-11 810 2
PHP

JWT类库<?php/***PHP实现jwt*/classJwt{//头部privatestatic$header=array('alg'=>'HS256',//生成signature的算法'typ'=>'JWT'//类型);//使用HMAC生成信息摘要时所使用的密钥privatestatic$key='mini!@!@^@^$%#$--*$#@(*)&&*Bingpo';/***获取jwttoken*@paramarray$payloadjwt载荷格式如下非必须*[*'iss'=>'jwt_admin',//该JWT的签发者*'iat'=>time(),//签发时间*'exp'=>time()+7200,//过期时间*'nbf'=>time()+60,//该时间之前不接收处理该Token*'sub'=>'www.admin.com',//面向的用户*'jti'=>md5(uniqid('JWT').time())//该Token唯一标识*]*@returnbool|string*/publicstaticfunctiongetToken(array$payload){if(is_array($payload)){$base64header=self::base64UrlEncode(json_encode(self::$header,JSON_UNESCAPED_UNICODE));$base64payload=self::base64UrlEncode(json_encode($payload,JSON_UNESCAPED_UNICODE));$token=$base64header.'.'.$base64payload.'.'.self::signature($base64header.'.'.$base64payload,self::$key,self::$header['alg']);return$token;}else{returnfalse;}}/***验证token是否有效,默认验证exp,nbf,iat时间*@paramstring$Token需要验证的token*@returnbool|string*/publicstaticfunctionverifyToken(string$Token){$tokens=explode('.',$Token);if(count($tokens)!=3)returnfalse;list($base64header,$base64payload,$sign)=$tokens;//获取jwt算法$base64decodeheader=json_decode(self::base64UrlDecode($base64header),JSON_OBJECT_AS_ARRAY);if(empty($base64decodeheader['alg']))returnfalse;//签名验证if(self::signature($base64header.'.'.$base64payload,self::$key,$base64decodeheader['alg'])!==$sign)returnfalse;$payload=json_decode(self::base64UrlDecode($base64payload),JSON_OBJECT_AS_ARRAY);//签发时间大于当前服务器时间验证失败if(isset($payload['iat'])&&$payload['iat']>time())returnfalse;//过期时间小宇当前服务器时间验证失败if(isset($payload['exp'])&&$payload['exp']<time())returnfalse;//该nbf时间之前不接收处理该Tokenif(isset($payload['nbf'])&&$payload['nbf']>time())returnfalse;return$payload;}/***base64UrlEncodehttps://jwt.io/中base64UrlEncode编码实现*@paramstring$input需要编码的字符串*@returnstring*/privatestaticfunctionbase64UrlEncode(string$input){returnstr_replace('=','',strtr(base64_encode($input),'+/','-_'));}/***base64UrlEncodehttps://jwt.io/中base64UrlEncode解码实现*@paramstring$input需要解码的字符串*@returnbool|string*/privatestaticfunctionbase64UrlDecode(string$input){$remainder=strlen($input)%4;if($remainder){$addlen=4-$remainder;$input.=str_repeat('=',$addlen);}returnbase64_decode(strtr($input,'-_','+/'));}/***HMACSHA256签名https://jwt.io/中HMACSHA256签名实现*@paramstring$input为base64UrlEncode(header).".".base64UrlEncode(payload)*@paramstring$key*@paramstring$alg算法方式*@returnmixed*/privatestaticfunctionsignature(string$input,string$key,string$alg='HS256'){$alg_config=array('HS256'=>'sha256');returnself::base64UrlEncode(hash_hmac($alg_config[$alg],$input,$key,true));}}调用方法引入之后用下面方法使用签发token$payload_test=array('iss'=>'Bingpo','iat'=>time(),'exp'=>time()+21600,'nbf'=>time(),'sub'=>'5','jti'=>md5(uniqid('JWT').time()));$token_test=Jwt::getToken($payload_test);echo$token_test;验证token$getPayload_test=Jwt::verifyToken($token_test);var_dump($getPayload_test);这是我见过最简单的php封装的库,不像别的看着繁琐的一批!

2020-7-9 787 0