zoukankan      html  css  js  c++  java
  • 会话控制:Cookie和session

    HTTP(超文本传输协议)定义了通过万维网(WWW)传输文本、图形、视频和所有其他数据所有的规则。HTTP是一种无状态的协议,说明每次请求的处理都与之前或之后的请求无关。虽然这种简化实现对于HTTP的普及做出了卓越的贡献,但对于希望创建复杂的Web应用程序的开发人员来说,这点有点困扰。为了解决这个问题,出现了一种在客户端机器上存储少量信息(cookie)。

    由于cookie大小限制、数量及其他原因,开发人员又提出了一种解决方案:session会话处理。

    一.Cookie的应用

      //1 创建一个Cookie
      //Cookie是在你的客户机存的一个小文件,这个文件包含你登录的信息
      //第一个参数表示Cookie的名,第二个表示Cookie的值,第三个参数过期时间
      setcookie('name','lee',time()+(7*24*60*60));
    
      //2 读取本机的Cookie,采用一个超级全局变量$_COOKIE
      //有个特性,setcookie并不是即使生成,它会慢一拍,意思就是第一次刷新只是覆盖了原来的,获取的还是原来的,但用的时候对我们没影响
      echo $_COOKIE['name'];
      
      //3 用变量检测判断Cookie是否存在
      echo isset($_COOKIE['name']);
    
      //4 删除Cookie
      setcookie('name',''); //将值设置为空即可
      setcookie('name','lee',time()-1); //通过过期时间也可以
       
      //5 Cookie的限制
      //1、必须在HTML文件的内容输出之前设置;
      //2、不同的浏览器对Cookie的处理不一致,且有时会出现错误的结果。
      //3、限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。

    Cookie登录例子:如果username和指定的姓名相同就登录

    demo1:

    <form method="post" action='demo2.php'>
    姓名:<input type='text' name='username' />
    <input type='submit' name='send' value='提交' />
    </form>

    demo2.php:

      //例子:如果username和指定的姓名相同,那么就生成一个cookie
      //完成登录
      if (isset($_POST['username']) && $_POST['username']=='dangxm') {
          //如果成功,生成一个Cookie,再跳转
          setcookie('name','dangxm');
          header('Location:demo3.php');
      }else {
          header('Location:demo.php');
      }

    demo3.php:

    <?php
      if (isset($_COOKIE['name'])){
          echo '欢迎光临:'.$_COOKIE['name'];
      }else {
          echo '非法登录';
      }
      
    ?>

    二.Session会话处理

      //Session会话处理,存在服务端,一般存放1440秒
      //如果没有进行任何操作,会自动销毁,可以通过php.ini来修改默认时间
      //即时性的,不会像Cookie慢半拍
      
      //1 开启会话,只要用到,必须开启,一般放在文件开头
      session_start();
      //2 创建session
      $_SESSION['name']='lee';
      //3 取值
      echo $_SESSION['name'];
      //4 判断是否存在
      if(isset($_SESSION['name'])){
          echo $_SESSION;
      }else {
          echo "session不存在";
      }
      //5 删除session:unset();
      unset($_SESSION['name']);
      session_destroy();//销毁所有session,一般放在session_start();后用来销毁之前创建的所有session

    Cookie使用于会员登录,购物车
    因为不占有服务器资源,所以会员特别多,购物车特别多,就用Cookie
     
    session一般用于后台管理登录,人少
    安全性,一段时间不操作会自动登录

  • 相关阅读:
    Window 命令
    HTTP 状态码
    Mysql基本用法-存储引擎-04
    Mysql基本用法-存储引擎-03
    Mysql基本用法-left join、right join、 inner join、子查询和join-02
    Mysql基本用法-01
    二进制编码-详细讲解
    JS操作文件
    PHP5接口技术入门
    PHP5中__get()、__set()方法
  • 原文地址:https://www.cnblogs.com/by-dxm/p/6151347.html
Copyright © 2011-2022 走看看