PHP自学之路----会话技术(cookie session)

会话技术

l  什么是会话

打开浏览器,访问某个网站的很多资源(页面=)通过超链接),当你关闭浏览器后,一个会话结束。

l  思考一个问题

在意个会话中,用户会产生一些数据,比如购物车,每个用户查看购物车的时候,看到自己的选择,怎么实现?

l  再思考一个问题?

为什么优酷网看视频时,会记录及看过的电影?

      

l  解决之道

会话技术-cookie session

Ø  会话技术 Cookie技术

Cookie的初步介绍:

1、  Cookie(小甜饼)是客户端技术,服务器把每个用户的数据保存在客户端本地的磁盘上。比如登录用户名吗,账号,等信息。

2、原理图

PHP自学之路----会话技术(cookie session)_第1张图片

3、  Cookie的基本使用
3.1 如何创建Cookie

<?php
    //演示如何创建cookie信息
    //把用户名和密码保存的客户端的cookie
    
    setcookie("name","jsh",time()+3600);
    setcookie("password","1234567",time()+3600);
    setcookie("addr","北京",time()+3600);
    echo "set OK!";
?>

3.2 获取Cookie

<?php
    /* echo "<pre>";
    print_r($_COOKIE);
    echo "</pre>"; */
    
    if(!empty($_COOKIE['name'])){
        echo $_COOKIE['name'];
        echo "</br>";
    }else{
    	echo "name=NULL";
    }
    if(!empty($_COOKIE['password'])){
    	echo $_COOKIE['password'];
    	echo "</br>";
    }else{
    	echo "password=NULL";
    }
    if(!empty($_COOKIE['addr'])){
    	echo $_COOKIE['addr'];
    	echo "</br>";
    }else{
    	echo "addr=NULL";
    }
    
?>

3.3 如何更新Cookie

<?php
    //Update
    setcookie("addr","上海",time()+3600);
    echo "更新成功";
?>

3.4 删除 Cookie

<?php
     //DEL
     setcookie("addr","",time()-200);
     echo "删除成功!";
     
     //DEL all
     /* foreach ($_COOKIE as $key=>$val){
     	setcookie("$key","",time()-200);
     } */
?>

具体实例:

1)保存登录时间:


<?php
    //保存登录时间 date("D M j G:i:s T Y");   
    date_default_timezone_set('UTC');
    if(!empty($_COOKIE['last_time'])){
    	echo "上次登录的时间是".$_COOKIE['last_time'];
    	setcookie("last_time",date("D M j G:i:s T Y"),time()+24*3600*30);
    }else{
    	
        setcookie("last_time",date("D M j G:i:s T Y"),time()+24*3600*30);
    }
 ?>

   在测试过程中,可能会提示时区错误的时间:

  1、在PHP文件中设置

date_default_timezone_set('UTC');

2、在PHP.ini文件中

date.timezone = Asia/Chongqing

2)获得用户名或密码的通用函数

  <?php 
      function getCookieVal($key){
          if(empty($_COOKIE[$key])){
              return "";
          }else{
              return $_COOKIE[$key];
          }
      }
  ?>


注:如果没有
setcookie("addr","上海");中没有设置过期时间,只能在一次会话中保存,当关闭网页后,在打开将不会显示,

session 技术

思考问题:
1、我们在浏览网站,去购物的时候,张三和李四,可以购买不同的商品,并且在查看购物车的时候,可以查看各自购买的商品?
思路:1、数据库 2、Cookie 3、
2、当你登录某个网站的时候,可以在任何网站显示登录的用户名
思路:1、数据库 2、Cookie 3、session文件
3、网站安全性问题?
   用户无需登录,就可以访问到我们的管理界面,别且不需要登录就能直接进行增删查改用户。
Ø  Session初步认识
① session是服务器技术
Session 是服务器技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个为其独享的session文件,当用户去访问服务器中的其他的web资源时,可以从用户各自的seesion中取出数据为用户服务。Seesion是总重要的用户行为的跟踪技术(防止用户非法登录/验证码等)。是重点和难点。
   ②示意图

     PHP自学之路----会话技术(cookie session)_第2张图片
   ③基本操作

1、   保存Session数据

<?php   
      echo "演示如何报错session数据";
      //初始化,可以在配置中设置php.ini 开启session.auto_start=1
      session_start();
      //保存数据
      $_SESSION['name']="sjin";
      
      //保存数组
      $arr=array("beijing","shanghai");
      $_SESSION['arr1']=$arr;
      
      echo "set OK!";
      
?>

l  保存数据格式:

name|s:4:"sjin"

Name KEY值

S:数据类型

4:字节数

Sjin:值

l  可以保存的数据类型

数组,字符串,对象等等

2、   如何获取session

<?php
    //获得session数据
    
    //初始化session
    session_start();

  /*   //获取所有session
    echo "<pre>";
    print_r($_SESSION);
    echo "</pre>"; */
    
    //2 通过key值获取
    
    echo $_SESSION['name'];

    $arr1=$_SESSION['arr1'];
    
    echo "</br>";
    print_r($arr1);
    
    //3 获取对象的必须把类的声明引用下
    
    ?>

注意:获取对象的必须把类的声明引用下

 

3、   更新session

<?php
    //更新session
    session_start();
    //保存数据
    $_SESSION['name']="peipei";
?>

理论上就是重新设置。

4、   删除session

<?php
    //删除session
    session_start();
    //删除指定的
    unset($_SESSION['name']);
    
    //删除所有的,只会删除当前会话的session文件删除掉
    //一个会话对应一个session文件
    
    session_destroy();
    
    ?>


当用户打开浏览器,访问某个网站时操作session时,服务器就会在服务器的磁盘为该浏览器分配一个保存session的信息的文件,该文件被这个浏览器独自访问。Session 细节问题总结:

1、session数据默认存在的时间为1440S(24min),在php.ini中可以配置。session.gc_maxlifetime = 1440

2、设定session文件在服务器的存放路径:在PHP.ini文件中配置,session.save_path=“”;

3、一次会话只能产品一个session文件。 

PHP自学之路----会话技术(cookie session)_第3张图片
PHP自学之路----会话技术(cookie session)_第4张图片

你可能感兴趣的:(session,Cookies,会话技术)