cookie和session学习

    cookie和session其实就是保存用户信息,在他们访问一个网站时,服务器端能知道这是一个合法注册用户。

    cookie的话,就是将用户信息保存在用户的客户端,session机制就是将信息保存在服务器端。

     (一)cookie

    下面直接进入php的例子吧,:

<?php
//file cookie.php
setcookie('user[username]', 'jack');
setcookie('user[pass]', sha1('jack'));
?>
当我们在浏览器里请求cookie.php这个文件的时候,看HTTP的响应头(Response Headers)中的Set-Cookie:

      在服务器端的php脚本中将用户信息以键值对的形式通过HTTP响应头发送给客户端。这样用户每次请求这个网站的页面时,在HTTP的请求头中(Request Headers)的Cookie都会带上用户的信息,这样请求到服务器那边,服务器就知道这是哪个用户了。

       将上面设置的cookie信息输出:

<?php
//file test-cookie.php
foreach ($_COOKIE['user'] as $key => $value)
{
    echo $key, ':', $value . '<br />';
}
?>

      注意 Requeset Headers中的Cookie, 每一次请求都会带上设置好的用户信息。

    通过下面的代码删除cookie。

<?php
//file delete-cookie.php
setcookie('user[username]', '', time()-1<span style="font-family:Microsoft YaHei;">, '/'</span>);
setcookie('user[pass]', '', time()-1, '/');                                      

     (二)session

        session的描述就好比如你在一个商城,办了一张会员卡,美丽的前台将你的信息刷刷敲进了电脑,然后给你一张会员卡,说:“你可以把这张卡的卡号给记在手机上,如果忘带卡了,只要将你的卡号告诉我们,我们也可以给你优惠”。那台电脑就相当于我们的服务器,卡号就是Session ID。这个Session ID通常保存在客户端的cookie中,如果用户禁用了cookie,那就只能通过url手动将Session ID进行传送了。我在php.ini中设置session的保存位置为:session.save_path = "/home/jack/session"

<?php
session_start();        //file session.php
/*
session_start()主要有两个作用
1、当用户第一次访问网站时,会创建一个唯一的Session ID,通过HTTP响应头将Session ID 保存到客户端。同时在服务器端生成一个Session ID命名的
   文件(开始会话);
2、当用户第二次访问网站时,HTTP的请求头中会带上这个Session ID, 这时的session_start()就会去服务器的硬盘中寻找和Session ID同名的文件,将
  保存的回话信息读出来(返回存在的回话)
*/
$_SESSION['name'] = 'jack';
$_SESSION['uid'] = 10011;
?>

      当我请求服务器时,HTTP的Response Headers中的Set-Cookie 将Session ID保存到客户端,在我的服务器端也生成了一个文件:

      这是里面的内容:

name|s:4:"jack";uid|i:10011;
     

      看上图,当我们请求这个网站的一个网页时,在Request Headers中的Cookie中都会携带上Session ID到服务器端请求资源。这样客户端在服务器端只要通过一个Session ID就可以进行交流,相对比较安全。

      清除session信息:

<?php
//file delete-session.php
session_start();
$_SESSION = array();    //清空$_SESSION的同时,服务器端对应的session文件内容也会被清空
if (isset($_COOKIE[session_name()]))
{
    setcookie(session_name(), '', time()-100, '/');
}
session_destroy();   //会删除对应的服务器端session文件
?> 

   

      

       


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值