PHP中Cookie和Session

PHP中Cookie和Session

计应134班凌豪

Cookie

1.什么是Cookie

  Cookie是一种在客户浏览器端村粗数据并以此来跟踪和识别用户的机制,简单的说Cookie是Web服务器暂时存储在用户硬盘上的一个文本文件,并随后被web服务器读取。Web服务器可以通过Cookie包含的信息来筛选或维护这些信息,以判断在HTTP中传输的状态。

  Cookie文本文件的命令格式如下:

  用户名@网站地址【数字】.txt

2.如何创建Cookie

  在PHP中通过setcookie()函数创建Cookie,语法格式如下:

bool setcookie(string name,【string value【int exprie【,string path【,string domain【,int secure】】】】】)  其基本参数说明及举例如下:

参数

说明

举例

name

Cookie的变量名

可以通过$_COOKIE["cookiename"]调用变量名为cookiename的Cookie

value

Cookie变量的值,该值保存在客户端,不能用来保存敏感数据

可以通过$_COOKIE["values"]获取名为values的值

expire

Cookie的失效时间,expire是标准的UNIX时间标记,可以用time()函数或mktime()函数获取,单位为秒

如果不设置Cookie的失效时间,那么Cookie将永远有效,除非手动将其删除

path

Cookie在服务器端的有效路径

如果该参数设置为“/”,则它在整个domain内有效,如果设置为“/11”,它在domain下的/11目录及子目录内有效。默认是当前目录

domain

Cookie有效的域名

如果要使Cookie在mrbccd.com域名下的所有子域都有效,应该设置为mrbccd.com

secure

指明Cookie是否仅通过安全的HTTPS,值为0或1

如果值为1,则Cookie只能在HTTPS连接上有效;如果值为默认值0,则Cookie在HTTP和HTTPS连接上均有效

3.读取Cookie

   在PHP中可以直接通过超级全局数组$_COOKIE[]来读取浏览器端的Cookie值

<?php
date_default_timezone_set("Etc/GMT-8");
if(!isset($_COOKIE["visittime"])){                                    //如果Cookie不存在
     setcookie("visittime",date("y-m-d H:i:s"));                     //设置一个Cookie变量
    echo "欢迎您第一次访问网站!"."<br>";                            //输出字符串
}else{                                                                //如果Cookie存在
    setcookie("visittime",date("y-m-d H:i:s"),time()+60);             //设置带Cookie失效时间的变量
    echo "您上次访问网站的时间为:".$_COOKIE["visittime"];            //输出上次访问网站的时间
    echo "<br>";                                                    //输出回车符
}
    echo "您本次访问网站的时间为: ".date("y-m-d H:i:s");            //输出当前的访问时间
?>

4.删除Cookie

  当Cookie被创建后,如果没有设置它的失效时间,其Cookie文件会在关闭浏览器时被自动删除。如果要在关闭浏览器之前删除Cookie文件,方法有两种:一种是使用setcookie()函数删除,另一种是在浏览器中手动删除Cookie。其基本方法如下:

使用setcookie()函数删除Cookie:

  将Cookie的过期时间设置为当前时间减1秒,代码如下:

  setcookie("name", "", time()-1);

在浏览器中手动删除Cookie

  在使用Cookie时,Cookie自动生成一个文本文件存储在IE浏览器的Cookies临时文件夹中。

  如果Cookie不设定时间,就表示它的生命周期为浏览器会话的期间,只要关闭IE浏览器,Cookie就会自动消失。这种Cookie被称为会话Cookie,一般不保存在硬盘上,而是保存在内存中。 如果设置了过期时间,那么浏览器会把Cookie保存到硬盘中,再次打开IE浏览器时会依然有效,直到它的有效期超时。

5.Session管理

   Session译为“会话”,其本义是指有始有终的一系列动作/消息,如打电话时从拿起电话拨号到挂断电话这一系列过程可以称为一个Session。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统所经过的时间。因此,Session实际上是一个特定的时间概念。

6.创建会话

在PHP中有两种方法可以创建会话。

  通过session_start ()函数创建会话。语法格式如下:

  bool session_start(void) ;

  通过session_register()函数创建会话。

   session_register()函数用来为会话登录一个变量来隐含地启动会话,但要求设置php.ini文件的选项,将register_globals指令设置为on,然后重新启动Apache服务器。

7.注册会话

  启动会话,创建一个Session变量并赋予空值,代码如下:

<?php

session_start();  //启动Session 

$_SESSION["admin"] = null; //声明一个名为admin的变量,并赋空值 

?>

8.使用会话

判断存储用户名的Session会话变量是否为空,如果不为空,则将该会话变量赋给$myvalue,代码如下:

<?php

if ( !empty ( $_SESSION['session_name']))  //判断用于存储用户名的Session会话变量是否为空

    $myvalue = $_SESSION['session_name'] ;//将会话变量赋给一个变量$myvalue

?>

9.删除会话

  删除单个会话

  注销$_SESSION['user']变量,可以使用unset()函数,代码如下

unset ( $_SESSION['user'] ) ;

  删除多个会话

  如果想要一次注销所有的会话变量,可以将一个空的数组赋值给$_SESSION,代码如下:

$_SESSION = array() ;

  结束当前会话

  如果整个会话已经结束,首先应该注销所有的会话变量,然后使用session_destroy()函数清除结束当前的会话,并清空会话中的所有资源,彻底销毁Session,代码如下:

session_destroy() ;

原文地址:https://www.cnblogs.com/linghao713/p/4910283.html