请求对象与相应

下面的两幅图产生的效果都是一样的,只不过一个用了request()函数,一个用了Request类

因为Request是单例模式,所以只能通过instance这个方法来获取这个实例

从形参中就开始对象化,也是可以了。输出结果和上面一样。

上面所学内容是三种方式获得thinkphp5的请求对象。下面的内容将是了解请求对象在哪里创建的以及请求对象中有哪些参数。

上面的那种参数就实例化的方法,原理如下图,由于所有的访问都要经过入口文件,然后载入start.php,最后执行run方法,在执行run方法的时候,就已经像下图这样实例化了。因此上面的用法可以成功使用。

这里我有点搞不懂了,为什么在浏览器输入localhost/index/index/index/type/5.html?id=10

而下面这段代码的$request->pathinfo()输出的却是index/index/index/type/5.html呢?难道说type是$request对象中的一个成员?这个pathinfo()输出不包含?后面的部分。

为了安全,可以在配置文件中设置,将.html给隐藏起来,这样攻击者就无法知晓目标网站是用什么语言开发的了。

$request->path()返回的是没有.html后缀的路径

输出结果如下:

下面是一些常用的方法:

若想得到当前的session值,并且输出出来,那么就写上:
dump($request->session());
只要当前的浏览器中有session,就会输出出来。

若当前浏览器中的session删除了,那么可以再设置一下session值就可以了

仅在代码中写上是远远不够的,还需要做一些配置。前几节的配置文件路径虽然改变了,但是thinkphp5的默认配置还是起作用的。我们创建的conf/config.php只不过可以利用覆盖的方式来让设置更加的规范、有备份。

所以,进行下面的配置:

先将默认配置中的session部分复制粘贴到config.php中

然后删除了图中框出来的部分,httponly将cookie限制在了http协议中,secure是啥来着,我忘了。。。哦对,是让cookie只限于https加密传输。删除了下面这两项,这个session组就覆盖了默认的session设置,系统就不会认为我的session设置中有这两项了。

之后再回到浏览器,就发现之前设置的session值起作用了,即使将我们上面写的session('name','wuyunlong')给注释掉。效果依旧不变。

由于设置了session,所以就能得到cookie,这是什么鬼?还有session和cookie是什么关系?原因如下:
服务器端为了辨别独一无二的用户,会给特定的用户创建特定的session,但是为了辨别独一无二的客户端,在第一次http请求的时候,服务器会告诉客户端要在cookie里面记录一下sessionID,每次请求把这个会话ID发给服务器,服务器就知道客户端是谁了。

由于有session,所以在cookie中有sessionID,如下图:

最后补充一下其他的用法:

如果想深入了解一下Request类的用法,可以去看Request.php文件。里面有详细的代码记录。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,680评论 19 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,471评论 11 349
  • 注:本文转载自前端大全 背景 在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称...
    楠小忎阅读 3,919评论 0 0
  • 2014年2月24日,这一年新年刚刚过去,可我确很是迷茫,因为刚刚毕业的我不知道未来的路该怎么走,...
    夏星星爱qxl阅读 1,651评论 0 0
  • 章鱼有骨骼吗?章鱼会变色吗?章鱼怎么吃东西?章鱼最危险的敌人又是谁呢?小朋友们,让我们跟随自然科学启蒙绘本,一...
    为爱阅读阅读 12,277评论 0 0