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

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"}"
    推荐阅读
  • 喝了绿豆汤会发胖吗(喝绿豆汤会发胖吗)

    喝绿豆汤会发胖吗喝绿豆汤可能引起发胖。这就是经常绿豆汤的好处。如绿豆汤加上蜂蜜,会产生发黑的颜色,正是这样的道理。这种反应虽没有毒性物质产生,却可能干扰绿豆的抗氧化作用,妨碍金属离子的吸收。所以,煮绿豆汤时,不要用铁锅,用砂锅最佳。因此,在熬绿豆汤时应该盖上锅盖,尽量减少绿豆与氧气的接触面积,避免发生氧化。

  • 黄记煌三汁焖锅的酱汁怎么做(黄记煌三汁焖锅的酱汁如何做)

    以下内容大家不妨参考一二希望能帮到您!黄记煌三汁焖锅的酱汁怎么做食材:蒜2个整蒜剥皮、蚝油2勺、黄豆酱2勺、番茄酱2勺、酱油2勺、糖1勺、淀粉1勺、辣椒油适量、胡椒适量、辣椒粉适量。首先将青红椒切块,蒜剥皮备用。然后将洋葱,土豆,红罗卜准备好。接着调酱汁,蚝油两勺,番茄酱两勺、黄豆酱两勺、酱油两勺、糖一勺。鸡精一勺,淀粉一勺,把所有配菜放一起,放适量盐,盐不要放太多,辣辣粉,油,搅拌均匀即可。

  • 睡莲一年四季都可以种吗(睡莲什么时候都能种植吗)

    下面希望有你要的答案,我们一起来看看吧!不过为了促使它更好的生长,最好保证水温在16℃以上,这样种下后可更快适应新的环境,恢复生长。从睡莲的生长习性上看,选春季末、夏季种植最好,方便管理。冬季种植必须要放在温暖的室内,且要加强管理才行。

  • 做皮蛋石灰和碱的比例(皮蛋石灰和碱的比例是多少)

    做皮蛋石灰和碱的比例一斤白石灰,二两食用碱,先把食用碱放碗里倒入热水融化,另起一个大铁锅,把白石灰倒入锅中,再倒入融化好的碱水,再倒入凉水,慢慢倒入一边倒一边搅拌石灰,搅拌成比牙膏稀的浓度,能够粘在鸡蛋表面,以不漏鸡蛋皮为准,把鸡蛋放入搅拌好的石灰中,使鸡蛋表面粘上一层石灰液,然后捞出鸡蛋,再去锯末或草灰滚动一下,使鸡蛋表面裹上一层为准。

  • 华为折叠手机mate x二手(爵士人生华为Mate7天猫报价1768元)

    华为折叠手机matex二手2016年6月23日,华为Mate7标准版(行货)在商家“天猫商城”报价1768元,该机配件为:充电器、耳机、数据线、说明书等,华为Mate7是华为推出的一款全金属智能手机。华为Mate7核心方面该机内置big.LITTLE架构的全新海思麒麟K925超八核处理器,并辅以“i3”微智核协处理器,以及2GBRAM16GBROM的内存组合,可流畅运行基于Android4.4版本的EMUI3.0。华为Mate7[产品售价]1768元[销售商家]天猫商城[相关链接]进入购买

  • 什么样的关系能成为夫妻(在床上有什么姿势)

    最好在仰睡时将枕头或梯形垫放置于膝盖下,以减少后背的僵硬和不适。胖子若侧卧睡,整个身体的重量就会压在手臂上,睡不长久。这样食管就会高于胃部,胃酸也不容易反流。关于失眠人群,睡姿一般是比较推荐侧卧,这样不会压迫器官,更有利于呼吸通畅进入睡眠。综上所述,我们在选择睡觉姿势时,还是应当选择一种最适合自身的、相对于自身认为舒服的姿势睡觉。

  • 马兰头孕妇能吃吗(马兰头孕妇能吃不)

    马兰头孕妇吃会怎么样导致流产马兰头性寒滑,能引起子宫平滑肌收缩,所以早期怀孕者和有习惯性怀孕者吃马头兰有流产的可能。影响胎儿发育孕妇常吃马头兰,会造成血凉,从而刺激胎儿,影响胎儿的正常发育生长,所以孕妇不宜吃马兰头。孕妇不小心吃了怎么办如果在怀孕期间不小心吃了马兰头后,如果是身体微微发凉,孕妇可卧床休息,注意保暖,观察变化,有不良反应时要马上去医院检查。

  • 青蜂侠2011电影(隐形人导演有望执导新版青蜂侠电影)

    青蜂侠2011电影李小龙版《青蜂侠》时光网讯据外媒报道,《隐形人》导演雷·沃纳尔正商谈执导环球影业新版“青蜂侠”电影《青蜂侠与加藤》。1966年由20世纪福斯电视出品的美剧版《青蜂侠》中,首次出现了李小龙饰演的“加藤”。该剧将重新构建青蜂侠与加藤的冒险故事,故事背景设定在现代,主角将是青蜂侠的儿子与加藤的女儿,他们合作打击犯罪,也将展现座驾“黑美人”。

  • 爱抚女人的乳房的性技巧

    大多数男人只是为了刺激女人的乳房。白天圆圈锻炼是最容易摩擦的动作。男人通常用手轻轻地握住圆圈。也就是说,用整个手掌包裹圆圈做圆形旋转。充分刺激乳房的关键是尽量增大手掌和手指与乳房接触,然后每天圆圈。有时这是为了激发女性的母性本能,但原则上胸部技能应该是温和的。这位女士惊讶地发现,孔武强壮的男人的手指在温柔的一面,与微妙的接触应该是令人陶醉的。最重要的是激发女性的性欲,加深这种感觉。