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

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

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

后台拿到时间戳,随机数后,通过一样的算法规则计算出签名,然后和传递过来的签名进行对比,一样的话,返回数据。我这个算法规则是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"}"
    推荐阅读
  • 大四毕业祝福语简短(大四毕业祝福语举例)

    大四毕业祝福语简短遇见你是我的缘,相识相知成美谈,朝夕相处三春过,殷殷情谊积心田,人生自古伤别离,毕业时刻在眼前,拂去离愁祝福送,前程似锦美梦圆!曾经,披星戴月苦奋战,试卷题海;现在,寒窗苦读十二载,苦尽甘来。功夫不负有心人,祝贺你考上理想学府,恭喜!方寸间中历数世上桑田沧海;时空里,细问人间暑往寒来;是朋友,星移斗转情不改;是知音,天涯海角记心怀。

  • 阳澄湖大闸蟹可以炒香辣蟹吗(阳澄湖大闸蟹做香辣蟹好吗)

    阳澄湖大闸蟹可以炒香辣蟹吗?阳澄湖大闸蟹可以炒香辣蟹吗阳澄湖大闸蟹是可以用来做香辣蟹的,不过阳澄湖大闸蟹最好还是蒸着吃比较好,这样才能品味出螃蟹的鲜美,肉质的紧实,蟹黄蟹膏的鲜香。而海蟹中的梭子蟹是用的更多的一种蟹类,在海蟹中是属于比较大的蟹类,最大体重可达0.5千克,并且梭子蟹的繁殖能力强,整个成长期很快,属于产量比较高的蟹类,肉多,脂膏肥满,味道鲜美,营养丰富,更适合做香辣蟹。

  • 尾翼(尾翼稳定脱壳穿甲弹)

    尾翼作用同后扰流板一样,都是为了在高速行驶时增加车尾的下压力,提高车辆稳定性。也起到一定的视觉效果。

  • 飞机失事事故调查报告时间(江西增雨飞机坠毁致5死事故调查报告)

    中国民用航空局主办的“中国民用航空安全信息系统”近日公布了此次事故的调查报告。2021年3月1日,该飞机从赣州黄金机场起飞,前往江西省内的吉安等地进行人工增雨作业。现场视频显示,飞机坠毁后将3栋民房砸中,燃起熊熊大火。此次事故造成机上5人死亡,另有1名当地居民烧伤。针对此事,民航华东地区管理局成立事故调查组予以调查。调查组综合分析认为,失事飞机在坠毁前的失速螺旋处置期间,副驾驶忙于通讯,机长也没有制止。

  • 好消息这所名校分校选址出炉(东外将新办第三所分校)

    南京市齐武路小学2019年8月20日,齐武路小学正式揭牌,与东外合作办学,学校占地面积约40.8亩,建筑面积约2.8万平方米,办学规模为8轨48个班级,已经于今年9月正式开学。东山外国语分校将军山中学2018年8月26日上午9点18分,南京东山外国语学校分校揭牌仪式在将军山中学正式举行。据学校官微介绍:学校中、高考成绩卓著,一直稳居江宁区第一、南京市前列。

  • 经常有这五种行为的人(这些生活中的小行为)

    所以这些微不足道的小动作,其实透露出了巨大的个人信息。另一种则是完全没有清单,随机购买物品。这个细节也被靖王捕捉到,险些暴露身份。而那些到得特别早的人,也并不意味着完全是没问题的,这类人可能有些过于认真。守时的人通常做好充分准备并乐于迎接挑战。

  • 是什么让人胖(什么原因让人发胖)

    是什么让人胖吃得太多没有消耗掉导致肥胖:也就是从食物中所得到的热量,超过消耗的热量,而过剩的热量即转成为脂肪,累积在脂肪细胞而形成肥胖。新陈代谢的降低导致肥胖:人到中年后由于新陈代谢率降低易发胖;营养不均,只吃肉类和垃圾食品不吃水果蔬菜也会使新陈代谢率降低易而肥胖。

  • 薛之谦买别墅4800万(薛之谦上海千万豪宅曝光)

    36岁的歌手薛之谦,最近被曝在上海添置了一套全新豪宅。当天,薛之谦身穿简单的白色T恤,戴着帽子和口罩,全副武装来到豪宅内的地下车库。这不是薛之谦在上海的第一套豪宅,2017年,他和高磊鑫宣布复婚时,就有网友爆料过他的一套豪宅。再次,薛之谦不仅做歌手,开网店,还经营着餐饮生意。根据某企业查询网站可知,薛之谦名下共有4家公司,其中三家是百分之百控股。

  • 不能自已的意思(不能自已的出处)

    以下内容希望对你有帮助!不能自已的意思不能自已是一个汉语成语,拼音是bùnéngzìyǐ,指无法控制自己,使激动的情绪平静下来。出自唐·卢照邻《寄裴舍人书》:“慨然而咏‘富贵他人合,贫贱亲戚离’,因泣下交颐,不能自已。”

  • 兔毛衣服怎么收纳(如何收纳兔毛衣服)

    兔毛非常吸湿,一旦被弄湿,就会结块,甚至发霉。因此,在存放兔子皮毛时,最好将其挂在通风良好且干燥的地方以防止水分吸收。兔毛的粘着力强且容易缠结,因此应将其包装在盒子和袋子中以进行存储,并且不应经常挤压或翻转以免产生摩擦和结块。同时,请勿将兔毛存放在密封的塑料容器中。兔毛是高级纺织原料,需要清洁且无污染。受污染的兔子皮毛必须及时清除,然后存放在盒子或袋子中。