1
2
3
4
5
6
7
8
9
10
11

Session及其和Cookie的区别

发布时间:2017-09-26 06:00   发布人:毛书朋   浏览次数:5770

Session及其和Cookie的区别

关联课件: 7子项目七 - Session及其和Cookie的区别(点击在线预览)


7.3.1.2   Session机制的原理及使用

       Session存储于服务器端(默认以文件方式存储),根据客户端提供的session id得到用户的文件,取得变量的值,session id可以使用客户端的Cookie或者访问的URL的附加数据传送给服务器,然后服务器读Session的目录。也就是说,session id是取得存储在服务上Session变量的身份证。如果配置文件“php.ini”中没有设置“session.auto_start=1”,那么要使用Session就必须先运行代码session_start();运行的时候,就在服务器上产生了一个session文件,随之也产生了与之惟一对应的一个session id,定义session变量以一定形式存储在刚才产生的session文件中。通过session id,可以取出定义的变量。

      下面通过一个实例来学习一下Session的使用。

      把文件“7-1.php”、“7-1action.php”、“7-1action-check.php”中的代码做一些改动。

      1)“7-1.php”中的执行代码无需变化,详细请查看代码“7-2action.php”。

      2)“7-1action.php”中的执行代码去掉:

setcookie("user_name", $_POST[user_name]);

setcookie("user_pw", $_POST[user_pw]);

     增加代码:

$_SESSION["user_name"]=$_POST["user_name"];

$_SESSION["user_pw"]=$_POST["user_pw"];

     并把做下列替换:

将"$_COOKIE["user_name"]"替换成"$_SESSION["user_name"]";

将"$_COOKIE["user_pw"]"替换成"$_SESSION["user_pw"]"。

     详细请查看代码“7-2action.php”。

     3)“7-2action-check.php”中执行代码做如下替换:

将"$_COOKIE["user_name"]"替换成"$_SESSION["user_name"]";

将"$_COOKIE["user_pw"]"替换成"$_SESSION["user_pw"]"。

    详细请查看代码“7-2action-check.php”。

    其运行的结果如图7-5所示。

7-5.1.jpg

(a)程序7-2.php的运行结果

7-5.2.jpg

(b)程序7-4 action.php的运行结果

7-5.3.jpg

(c)  程序7-2action-check.php的运行结果

不难发现,注册Session的方法为:$_SESSION["Session_name"]=值。


      7.3.1.3 Cookie与Session的比较 

      1. 存储机制。

     Cookie是一种在远程浏览器端存储数据并以此来跟踪和识别用户的机制,而Session是存储于服务器端(默认以文件方式存储session)的。

      2. 生效条件

     Cookie的生效与浏览器端设置有关,如果浏览器端禁用了Cookie,那么它就不能生效了。Session的生效与服务器端的配置有关,如果“php.ini”中没有设置“session.auto_start=1”,那么要使用Session就必须先运行代码session_start()。

     3. 注册方法

     Cookie的注册方法为:setcookie("cookie_name", "值");Session的注册方法为:$_SESSION ["Session_name"]=值。

     4. 生效范围

     Cookie的生效范围为注册后的所有页,Session的生效范围为注册起的所有页。

     值得注意的是,PHP中的Session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的Cookie出现问题的时候就会影响Session了。但是,session不一定必须依赖Cookie,这也是Session相比Cookie的高明之处。当客户端的Cookie被禁用或出现问题时,PHP会自动把session id附着在URL附加数据中,这样再通过session id就能跨页使用Session变量了。





  • 姜瑞祥 2018-01-07 17:28:12
    session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。
  • 姜瑞祥 2018-01-07 17:28:32
    cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。
  • 姜瑞祥 2018-01-07 17:29:07
    cookie 和session的区别是:cookie数据保存在客户端,session数据保存在服务器端。 简单的说,当你登录一个网站的时候,
  • 姜瑞祥 2018-01-07 17:29:42
    如果web服务器端使用的是session,那么所有的数据都保存在服务器上, 如果浏览器使用的是cookie,那么所有的数据都保存在浏览器端。
  • 高成 2018-01-09 15:44:48
    页面用session好还是cookie好呢
  • 张灿立 2018-01-09 16:12:03
    Cookie的生效范围为注册后的所有页,Session的生效范围为注册起的所有页.
  • 孙永伟 2018-01-10 18:53:34
    浏览器用COOKIE是不是比较好?