科百科
当前位置: 首页 范文大全

php项目开发案例源码(php网页设计实例代码)

时间:2023-06-01 作者: 小编 阅读量: 2 栏目名: 范文大全

后台拿到时间戳,随机数后,通过一样的算法规则计算出签名,然后和传递过来的签名进行对比,一样的话,返回数据。我这个算法规则是1时间戳,随机数,口令按照首字母大小写顺序排序2然后拼接成字符串3进行sha1加密4再进行MD5加密5转换成大写。

php的api接口

在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证。

验证原理

示意图

原理

从图中可以看得很清楚,前台想要调用接口,需要使用几个参数生成签名。

时间戳:当前时间

随机数:随机生成的随机数

口令:前后台开发时,一个双方都知道的标识,相当于暗号

算法规则:商定好的运算规则,上面三个参数可以利用算法规则生成一个签名。

前台生成一个签名,当需要访问接口的时候,把时间戳,随机数,签名通过URL传递到后台。后台拿到时间戳,随机数后,通过一样的算法规则计算出签名,然后和传递过来的签名进行对比,一样的话,返回数据。

算法规则

在前后台交互中,算法规则是非常重要的,前后台都要通过算法规则计算出签名,至于规则怎么制定,看你怎么高兴怎么来。

我这个算法规则是

1 时间戳,随机数,口令按照首字母大小写顺序排序

2 然后拼接成字符串

3 进行sha1加密

4 再进行MD5加密

5 转换成大写。

前台

这里我并没有实际的前台,直接使用一个PHP文件代替前台,然后通过CURL模拟GET请求。我使用的是TP框架,URL格式是pathinfo格式。

源代码

<?php/** * Created by PhpStorm. * User: Administrator * Date: 2017/3/16 0016 * Time: 15:56 */namespace ClientController;use ThinkController;class ClientController extends Controller{ const TOKEN = 'API'; //模拟前台请求服务器api接口 public function getDataFromServer(){ //时间戳 $timeStamp = time(); //随机数 $randomStr = $this -> createNonceStr(); //生成签名 $signature = $this -> arithmetic($timeStamp,$randomStr); //url地址 $url = "http://www.apitest.com/Server/Server/respond/t/{$timeStamp}/r/{$randomStr}/s/{$signature}"; $result = $this -> httpGet($url); dump($result); } //curl模拟get请求。 private function httpGet($url){ $curl = curl_init(); //需要请求的是哪个地址 curl_setopt($curl,CURLOPT_URL,$url); //表示把请求的数据已文件流的方式输出到变量中 curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); $result = curl_exec($curl); curl_close($curl); return $result; } //随机生成字符串 private function createNonceStr($length = 8) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = "; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return "z".$str; } /** * @param $timeStamp 时间戳 * @param $randomStr 随机字符串 * @return string 返回签名 */ private function arithmetic($timeStamp,$randomStr){ $arr['timeStamp'] = $timeStamp; $arr['randomStr'] = $randomStr; $arr['token'] = self::TOKEN; //按照首字母大小写顺序排序 sort($arr,SORT_STRING); //拼接成字符串 $str = implode($arr); //进行加密 $signature = sha1($str); $signature = md5($signature); //转换成大写 $signature = strtoupper($signature); return $signature; }}

服务器端

接受前台数据进行验证

源代码

<?php/** * Created by PhpStorm. * User: Administrator * Date: 2017/3/16 0016 * Time: 16:01 */namespace ServerController;use ThinkController;class ServerController extends Controller{ const TOKEN = 'API'; //响应前台的请求 public function respond(){ //验证身份 $timeStamp = $_GET['t']; $randomStr = $_GET['r']; $signature = $_GET['s']; $str = $this -> arithmetic($timeStamp,$randomStr); if($str != $signature){ echo "-1"; exit; } //模拟数据 $arr['name'] = 'api'; $arr['age'] = 15; $arr['address'] = 'zz'; $arr['ip'] = "192.168.0.1"; echo json_encode($arr); } /** * @param $timeStamp 时间戳 * @param $randomStr 随机字符串 * @return string 返回签名 */ public function arithmetic($timeStamp,$randomStr){ $arr['timeStamp'] = $timeStamp; $arr['randomStr'] = $randomStr; $arr['token'] = self::TOKEN; //按照首字母大小写顺序排序 sort($arr,SORT_STRING); //拼接成字符串 $str = implode($arr); //进行加密 $signature = sha1($str); $signature = md5($signature); //转换成大写 $signature = strtoupper($signature); return $signature; }}

结果

string(57) "{"name":"api","age":15,"address":"zz","ip":"192.168.0.1"}"
    推荐阅读
  • 蓝莓软的能吃吗(可以吃软的蓝莓吗)

    我们一起去了解并探讨一下这个问题吧!蓝莓软了可能是过了几天不新鲜,其中的水分慢慢流失了,亦或是过于成熟,其口感较新鲜的蓝莓差,但是并没有变质,对人体也没有害处,还是可以吃的。蓝莓软了并不代表它坏了,只是其中水分流失了,影响了口感。除非蓝莓上面有毛毛出现或长霉了,这种蓝莓就已经变质了,请不要食用。

  • 缝纫机底线有圈圈怎么回事 缝纫机底线有圈圈怎么回事视频

    缝纫机底线有圈圈,是因为线柱螺丝松动导致的,将梭套上的螺丝拧紧即可。缝纫机如何保养:1、清理送布牙,将位于针板和布牙中间的螺丝拆下来,将上面的灰尘等杂物清理干净,并添加一点机油润滑。在擦拭时,一定要保证软布不要太湿也不要太干,太干了擦不干净,太湿了会有水滴到缝纫机内部,可能导致生锈。

  • 拱手礼男女区别(拱手礼男女区别说明)

    拱手礼男女区别拱手礼男女区别,据段玉裁所著的《说文解字注·手部》记载:“谓沓其手,右手在内,左手在外。男之吉拜尚左,女之吉拜尚右。凶拜反是。九拜必皆拱手”。女子行拱手礼时,左手在内,右手在外,若遇丧事行礼,男子右手在外,女子则左手在外。

  • 蝉蜕的功效与作用(蝉蜕的功效与作用详述)

    麻疹不透,风疹瘙痒。本品甘寒,既能疏散肝经风热,又可凉肝息风止痉,故可用治小儿急慢惊风,破伤风证。蝉蜕散及五虎追风散煎剂能对抗小白鼠因士的宁,可卡因及烟硷引起的惊厥死亡。部分消除烟硷引起的肌肉震颤,对由破伤风毒素引起的家兔破伤风,不论在与破伤风毒素注射同时给予,还是在全身性破伤风症状发作后给予,均能使发病动物的存活时间延长。五虎追风散尚能寻抗卡地阿佐引起的惊厥死亡。

  • 鼓励学生努力上进的诗句(激励学生努力上进的经典诗句)

    鼓励学生努力上进的诗句业精于勤,荒于嬉。精诚所加,金石为开。笔落惊风雨,诗成泣鬼神。见兔而顾犬,未为晚也;亡羊而补牢,未为迟也。博观而约取,厚积而薄发。差以毫厘,谬以千里。恢弘志士之气,不宜妄自菲薄。不为外撼,不以物移,而后可以任天下之大事。人生难得几回搏,此时不搏待何时。千磨万击还坚劲,任尔东西南北风。大直若屈,大巧若拙,大辩若讷。吾生也有涯,而知也无涯。操千曲而后晓声,观千剑而后识器。

  • 满天神佛假扮道士捉鬼(聂祀公捉鬼)

    聂祀公就大手一挥,同老马出的院门,跨上早已准备好的小毛驴,得得得,直奔丁家湾。聂祀公摔镫离鞍,脱鞋上炕。聂祀公放下手鼓,整顿衣帽。知情者说,聂师父布下了天罗地网。随后聂祀公重新上炕落座。聂祀公真是饿了,毫不客气,大口吃肉,大嚼其骨。拳卧在墙脚的大黄狗,见聂祀公并沒有遗它一点碎骨的意思,思谋再三,不由的大叫数声,口吐鲜血,含恨而去。聂祀公酒足肉饱,骑驴乃去。

  • 12月2日重庆高新区解除部分疫情风险区域

    以上解除区域自通告发布之时执行。未尽事宜,以重庆高新区新型冠状病毒肺炎疫情防控指挥部解释为准。

  • 体积怎么算(各形状的物体体积算法)

    体积的算法如下:长方体:长方体体积=长×宽×高,我来为大家科普一下关于体积怎么算?以下内容希望对你有帮助!体积怎么算体积的算法如下:长方体:长方体体积=长×宽×高正方体:圆柱(正圆):圆柱(正圆)体积=圆周率××高以上立体图形的体积都可归纳为:圆锥(正圆):圆锥(正圆)体积=圆周率×底半径×底半径×高/3角锥:角锥体积=底面积×高/3球体:球体体积=4/3

  • 衡水中学全国排名(衡水中学简介)

    我们一起去了解并探讨一下这个问题吧!衡水中学全国排名在2019年的全国百强中学排名中,衡水中学排名第二。2014年11月,学校占地230亩,有8000名在校生,600名教职工,其中国务院特贴专家2人、国家级荣誉获得者17人、特级教师13人。

  • 形容愤怒的词语(愤怒的词语介绍)

    下面更多详细答案一起来看看吧!形容愤怒的词语横眉怒目:耸起眉毛,瞪大眼睛。也形容把某种情绪或感觉竭力抑制住。突然变脸大发脾气。肝和胆将要破碎了。形容极度悲痛或非常生气。