tp和laravel 做 API接口哪个会比较好一点?

使用PHP怎么实现微信公众号验证Token?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

/*这个是你自定义的令牌,图片里面Token的位置*/
/*初始化当前的类*/
 exit; #一定要停止php运行,避免产生不必要的字串符
 #注意: 这里可以不用检验$_GET参数的有效性,因为微信一定会传相关的参数给你的的,你直接开启验证模式即可。
 

首先,强势插个口播(在使用过TP5,CodeIgniter, CakePHP, Yii, Slim之后,我认为Laravel是目前来说最好的PHP框架,不接受其他任何意见。)
其次,验证代码上面是跟纯PHP大同小异的,唯一的区别是在你处理POST请求的时候一定要让Laravel不要检测CSFR Token,否则会出现错误。
#坑点,看下面的常见坑介绍
#去到你的Middlewarel里面找到/debug/ 选择消息接口测试文本消息接口就行。其他的可以看图说话
 
 

关于使用PHP怎么实现微信公众号验证Token问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

}

PHP结构便是一种能够在项目开发过程中,提高开发效率,创立更为稳定的程序,并削减开发者重复编写代码的基础架构。PHP结构是将不同Web体系开发过程中的共性、通用部分功能进行抽象,形成开发Web程序的基本架构。进行Web体系开发时,开发人员如果在PHP结构基础上进行二次开发,即可大大简化开发过程,快速完成体系功能。PHP结构能促进Web体系的快速开发、节省时刻、削减重复代码量,并能帮助初学者创立规范、稳定的Web体系。
结构,即Framework,其实便是某种运用的半成品,或者说是一系列组件,供人们选用它来完结咱们自己的运用。换句话说,运用结构开发程序,就好比运用别人现已搭好的舞台来表演,无须操心搭建舞台这样烦琐又底层的事情,这样就可以在怎么更好地表演上尽心尽力。例如,微软的.NETFramework,运用它来开发Windows运用程序功率就会高许多。
PHP开发结构也是如此。PHP开发结构封装了底层的操作,把Web程序开发摆到了流水线上。换句话说,PHP开发结构有助于促进快速软件开发(RAD)。运用PHP结构既节省了开发者的时刻,也有助于开发者创建更为安稳的程序,并削减开发者重复编写代码的劳作。PHP开发结构使得开发者可以花更多的时刻去发明真正的Web程序,而不是编写重复性的代码。
PHP开发结构多采用“模型一视图一控制器”(MVC)架构形式。MVC架构最早存在于桌面运用程序中,M是指数据模型,V是指用户界面,C则是指控制器。运用MVC的意图是将M和V的完成代码别离,即隔离了业务逻辑与用户界面,不论哪一方改变都不会影响另一方。在MVC架构中,模型(Model)担任数据,视图(View)担任体现,控制器(Controller)担任业务逻辑。从本质上说,MVC拆分了一个程序的开发过程,这样你就可以修正独立的每一部分,而其他部分不受影响,这使得编写PHP代码更为快捷简略

Laravel和Thinkphp这两个php结构关于php程序员都不陌生,新手或许对Thinkphp比较熟,也是国内比较知名的开源结构,更高档的Laravel一般有点经历的才运用。
ThinkPHP简略、快速,基于MVC和面向目标,易用性较高,是一款简洁实用的轻量级结构。
Lavavel一直秉承着高雅的原则,很好的支撑了composer,完结了更丰厚的扩展,社区文档活泼,相较于TP,Lavavel更巨大,安全性也更高,更适宜开发大中型项目,被称为“大师型开发结构”。
1、烘托模版办法的不同
2、在实践开发中咱们常常遇到这样的问题,便是开发地址不固定。
这就造成了咱们需求频频的更改数据库装备,给开发作业造成了费事。TP依然没有避免这个”灾祸”,在laravel结构中,.env环境文件的呈现处理了这个费事。咱们只需求在不同的作业地址装备好.env文件就不避再进行装备,因为无论是git仍是svn,“.env是不会随着文件一同提交到服务器的”。
3、Laravel结构供给了大量的闭包
作为菜鸟的我目前只运用了use办法,即如安在函数内部运用外层变量。
4、post传值中注意点不同
在Laravel结构里,由于其考虑到了跨站攻击,所以假如运用form表单以post办法进行传值时,假如不再form表单中加入{undefined{csrf_field()}}则会报出TokenMethodnotfound的语法错误,而TP结构则需求自己手动完结避免跨站攻击的代码。
5、条件判别句子书写办法的差异
Laravel结构里ifelse判别句子和foreach句子,书写时有必要以@if开头,以@endif结尾。假如没有则报语法错误,@foreach@endforeach同理;而TP结构则和PHP语法规矩运用办法一致,直接用ifesle句子判别和foreach循环遍历。
6、Laravel里内置了大量的办法供开发者运用
在实践运用中更接近于”让目标完结一切”的开发思维,比方在后台表单验证的时分,Laravel内置了大量的验证办法。例如对用户名的验证:咱们能够运用validate办法里’username’=>’required'(不能为空)|alpha_dash(有必要数字字母下划线)|between:6,18(在多少位数之间);还内置了例如email;same:字段名;diff:字段名等大量的办法极大的提高了开发速度。
在TP结构中,咱们对用户名暗码进行加密时运用md5();的办法进行加密。但md5的缺点在于其能够逆向破解,并且在同等规矩下同样的暗码md5加密出的字符串是有或许呈现相同的,这就下降其安全性。但在Laravel结构中内置了”哈希”Hash加密单向加密办法,且同样的参数加密出的字符串是肯定不会呈现相同的情况,这就提高了安全性。
Laravel在数据库建表上有自己独立内置的结构,能够完全不必借助原生SQL句子或许SQLyogEnt、Navicat这样的建表东西进行数据库的树立,增删改查和数据交互。我想这或许是它牢牢占有NO.1的一大亮点,在ThinkPHP中则需求咱们借助SQL句子或许建表东西去逐步完善数据。
8.2、向goods数据表填充数据,要注意数据的类型是严格区别的,并且一定要加。增加完后运用phpartisanmigrate指令完结表的创立。
8.3、假设某个字段不符合要求或许需求增加字段怎么办?无须担心,从github中pull下项目后在数据表里直接修改,只需求用:
在介绍建表时已经运用了创立模型的指令:
Laravel里模型是对面向目标开发思维最好的诠释,让目标帮咱们完结需求。
摘自5.1手册:(Laravel的EloquentORM供给了漂亮、简洁的ActiveRecord完结来和数据库进行交互。每个数据库表都有一个对应的「模型」可用来跟数据表进行交互。你能够通过模型查找数据表内的数据,以及将记载增加到数据表中。)
本人在实践运用中也实实在在的感触到了通过发明模型对数据表操作带来的便当,比如:批量赋值,跨表查询,删去模型和软删去,模型相关,当然这些在TP结构中也能够利用模型完结。这一点归于仁者见仁智者见智,依据个人喜爱而定。
10.1、ThinkPHP对Session操作进行了封装,并且无需引入就能够运用,Session的启动会在运用初始化的时分自动执行,所以无需手动运用Session::start()来启动Session。
运用Session类操作和普通办法调用$_SESSION来操作并没有本质不同,只是Session类很多参数能够依据项目装备来灵敏设置,最常用的操作办法示例:
也能够自定义session驱动。
thinkphp,采用mvc思维开发,它活动范围首要是国内,并且完全免费开源,学习资料非常丰厚,关于新手来说是学习php结构最佳的挑选,首要仍是都是中文文档。从5.0版别开始,号称为API开发而设计的高性能结构。装备开发也是非常简略,一般下载结构就能够直接开发,开发代码风格也符合国人思维,所以简略,方便,适宜新手的php结构。
Laravel结构,为WEB艺术家发明的PHP结构,同时也是目前AP开发最好的高档php结构。咱们都知道php首要是网站web开发,Laravel结构开发高雅,简略的代码,并且Laravel是为人而设计结构,开发的思维比较适宜中级程序员思路,所以有经历的php程序员比较青睐Laravel结构。新手为什么不强烈推荐呢?首要是Laravel结构是一个世界的结构,很多都是英文文档,尽管还有中文文档,可是资料有限,很多有用的资料都不是免费的,能够说是Laravel结构是半开源代码,新手假如没有人带,或许需求学习精力是有限的。

}
 随着前后端完全分离,`PHP`也基本告别了`view`模板嵌套开发,转而专门写资源接口。`Laravel`PHP框架中最优雅的框架,国内也越来越多人告别`ThinkPHP`选择了`Laravel``Laravel`框架本身对`API`有支持,但是感觉再工作中还是需要再做一些处理。`Lumen`用起来不顺手,有些包不能很好地支持。所以,将`Laravel`框架进行一些配置处理,让其在开发`API`时更得心应手。
 


我们其实是可以拿到这些荷载信息的。同时,我们也可以加入自己的信息,这样在中间件时候进行解析,拿到我们的负载,就可以进行判断是否是属于当前guard的token了。
 
//获取当前守护的名称
// 检查此次请求中是否带有 token,如果没有则抛出异常。 //1. 格式通过,验证是否是专属于这个的token //获取当前守护的名称 //即使过期了,也能获取到token里的 载荷 信息。 //如果不包含guard字段或者guard所对应的值与当前的guard守护值不相同 // 检测用户的登录状态,如果正常则通过 // 使用一次性登录以保证此次请求的成功 // 如果捕获到此异常,即代表 refresh 也过期了,用户无法刷新令牌,需要重新登录。

这个中间件是通用的,可以直接替换User的刷新用户认证中间件噢

 
 
此时再次进行测试是否串号,最后结果可以成功阻止之前的串号问题,暂未发现其他BUG。

user的修复串号问题请自己修改,这里就不再啰嗦一遍了。

 
 
 
同一时间只允许登录唯一一台设备。例如设备 A 中用户如果已经登录,那么使用设备 B 登录同一账户,设备 A 就无法继续使用了。
 
我们在登陆,token过期自动更换的时候,都会产生一个新的token
我们将token都存到表中的last_token字段。在登陆接口,获取到last_token里的值,将其加入黑名单。
这样,只要我们无论在哪里登陆,之前的token一定会被拉黑失效,必须重新登陆,我们的目的也就达到了。
 
//获取当前守护的名称 //如果登陆,先检查原先是否有存token,有的话先失效,然后再存入最新的token //因为让一个过期的token再失效,会抛出异常,所以我们捕捉异常,不需要做任何处理
// 检查此次请求中是否带有 token,如果没有则抛出异常。 //1. 格式通过,验证是否是专属于这个的token //获取当前守护的名称 //即使过期了,也能获取到token里的 载荷 信息。 //如果不包含guard字段或者guard所对应的值与当前的guard守护值不相同 // 检测用户的登录状态,如果正常则通过 // 使用一次性登录以保证此次请求的成功 // 如果捕获到此异常,即代表 refresh 也过期了,用户无法刷新令牌,需要重新登录。
 

user的请自行添加,自行测试结果

 
 
开发中,我们也经常需要使用异步队列,来加快我们的响应速度。比如发送短信,发送验证码等。但是队列执行结果的成功或者失败只能通过日志来查看。这里,我们使用horizon来管理异步队列,完成登陆和刷新token时,将token存入last_token的因为放在异步完成。

Horizon 提供了一个漂亮的仪表盘,并且可以通过代码配置你的 Laravel Redis 队列,同时它允许你轻易的监控你的队列系统中诸如任务吞吐量,运行时间和失败任务等关键指标。

 
 
horizon的详细介绍可以。
 
 
 
仪表盘不能通过接口访问。所以我们做验证的时候,可以通过指定的IP才能正常通过进入仪表盘。IP可以写在.env文件里,当IP发生变化时进行修改。
.env 最后加上一行
 
创建一个专门负责保存last_token的任务类
 

 
此时,进程处于阻塞状态。
打开浏览器输入http://你的域名/horizon,可以看到Horizon仪表盘。
 
我们可以使用Supervisor来守护我们的horizon阻塞进程。具体方法可以看我之前写的文章:
 
确认horizon已经正常启动。然后我们访问/api/v1/admin/login这个登陆接口。打开数据库可以发现,last_token与返回结果的token相同。我们也可以再打开仪表盘,看任务完成情况
 
如果修改了job类的源码,需要将horizon重新启动,否则代码还是未改动前的。(应该是horzion是将所有任务类常驻内存的原因)
到此,所有修改已经全部完成,如果还有新的更改也会实时更新。同时,本文中的所有修改都已经在正式项目中运行过了。
如果你已经看完了整篇文章,知道了修改的原因,但是不想受累自己修改一遍。我已经将修改后的上传到全球最大的同性交友网站了,可以直接点击直接搬走。或者复制下方的链接打开。

本作品采用,转载必须注明作者和本文链接

}

我要回帖

更多关于 php写接口用什么框架 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信