http协议。会话控制cookie、session


http协议是无状态的协议。每次访问页面的http协议都是独立的,正是因为http协议是无状态的,所以导致

访问一个页面后再去访问另一个页面的时候,一些数据会消失,比如:用户的登录信息就会消失。那么怎么才能使

用户的信息不消失呢?就是使用会话控制。

  当然除了会话控制,有没有什么方法让变量在不同的页面之中都有效。答:有
(1)通过get或post方式从一个页面中传到另一个页面中(只适合传输数据量小的,数据量变大就不合适了)
(2)可以把变量先存储到数据库中,或者使用file_put_content()写入文件中,然后在其他页面使用file_get_content()读取(但是

   缺点是所有用户共用文件中的数据,如果想要跟踪用户的登录信息,这种做法是非常不可取的)

(3)cookie技术,是把用户的信息存储到用户自己的电脑里的一个文件中(方法2中是把数据写在服务器的文件中),在设置cookie的那个页面中

是不能获取到cookie中的信息的,就是说在设置cookie的页面中echo  $_COOKIE是 没有数据的。

这样该用户在访问一个网站不同的页面的时候,他的登录信息就可以实现跟踪。  setCookie()设置cookie,,,注意:setCookie

之前不能有任何的输出(像echo,print_r等等)。否则会报错。(提一下,基本上头信息之前都不能有输出,比如header)

  2.session:上面说了cookie是把数据存在客户端的文件,而程序是不能操作客户端的数据的并且用户是可以阻止cookie的(不用cookie存储 数据),

这个时候session就出现了,session是把数据存在服务器端的文件中(数据库、redis都行)。但是用户有很多,比如张三、李四,怎么找到张三的信息

呢?就是session_id,在使用session的时候,每个用户会得到一个唯一的session_id,以后每次张三登录的时候,就可以凭借session_id

去调用存在session中数据信息。   session_id的存储有两种: 一种是基于cookie,就是存到cookie中;第二种,通过URL传输session_id。

  (2)session_start()开启之前不能有任何输出,还有就是     <?php   之前不能有空格、空行,他也相当于是输出。session_start有两个作用,一是

创建session_id,当你第一次开启session,他会创建session_id保存到cookie中(可以使用$_COOKIE查看);二是当已经分配session_id情况下,session_start

就不在创建新的ID,而是用之前的ID来开启会话。

  (3)开启session方式:1.每个页面必须都有session_start才行,2.或者通过修改配置文件,那么就不用每个页面都写session_start(),但是修改配置文件的方式

会导致session不能存储对象。所以不建议使用配置文件的方式自动开启session。

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号