PHP学习笔记:6cookie和session

Cookie

创建cookie

cookie是http头标的组成部分,一定要在其他内容发送之前就要发送,所以必须最先输出
使用setcookie()函数创建

setcookie(string name[,string value[,int expire[, string path[,string domain[,int secure]]]]])

在这里插入图片描述

读取cookie

直接通过超级全局数组$_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");			//输出当前的访问时间
?>

在这里插入图片描述

删除cookie

方法有两种:一种是使用setcookie()函数删除,另一种是在浏览器中手动删除Cookie。下面分别进行介绍。
使用setcookie()函数删除Cookie
删除Cookie和创建Cookie的方式基本类似,删除Cookie也使用setcookie()函数。删除Cookie只需要将setcookie()函数中的第二个参数设置为空值,将第3个参数Cookie的过期时间设置为小于系统的当前时间即可。
例如,将Cookie的过期时间设置为当前时间减1秒,代码如下:

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

Session

了解Session

翻译为“会话”,当启动一个Session会话时,会生成一个随机且唯一的session_id,也就是Session的文件名,此时session_id存储在服务器的内存中,当关闭页面时此id会自动注销,重新登录此页面,会再次生成一个随机且唯一的id。
主要的步骤是:启动会话→注册会话→使用会话→删除会话

启动会话

方式有两种:一种是使用session_start()函数,另一种是使用session_register()函数为会话登录一个变量来隐含地启动会话。使用session_start() 之前浏览器同样不能有任何输出

注册会话

会话变量被启动后,全部保存在数组$_SESSION中。通过数组$_SESSION创建一个会话变量很容易,只要直接给该数组添加一个元素即可。
例如,启动会话,创建一个Session变量并赋予空值,代码如下:

<?php 
session_start();	//启动Session				
$_SESSION["admin"] = null; //声明一个名为admin的变量,并赋空值	
?>

使用会话

首先需要判断会话变量是否有一个会话ID存在,如果不存在,就创建一个,并且使其能够通过全局数组$_SESSION进行访问。如果已经存在,则将这个已注册的会话变量载入以供用户使用。
举个例子:

<?php
if ( !empty ( $_SESSION['session_name']))	//判断用于存储用户名的Session会话变量是否为空
 	 $myvalue = $_SESSION['session_name'] ;//将会话变量赋给一个变量$myvalue
?>

删除会话

  • 删除单个会话
    删除会话变量,同数组的操作一样,直接注销$_SESSION数组的某个元素即可。
    例如,注销$_SESSION['user']变量,可以使用unset()函数,代码如下:
    unset ( $_SESSION['user'] ) ;
  • 删除多个会话
  • 如果想要一次注销所有的会话变量,可以将一个空的数组赋值给$_SESSION,代码如下:
    $_SESSION = array() ;
  • 结束当前会话
    如果整个会话已经结束,首先应该注销所有的会话变量,然后使用session_destroy()函数清除结束当前的会话,并清空会话中的所有资源,彻底销毁Session,代码如下:
    session_destroy() ;

Session设置时间

客户端没有禁止Cookie

  • 使用setcookie()函数可对Session设置失效时间,例子:
<?php
	session_start();
	$time = 1*60;
	setcookie(session_name(),session_id(),time()+$time,"/"); # 使用setcookie手动设置Session失效时间
	$_SESSION['user'] = 'mr'

客户端禁止Cookie

1)在登录之前提醒用户必须打开Cookie,这是很多论坛的做法。
2)设置php.ini文件中的session.use_trans_sid = 1,或者编译时打开-enable-trans-sid选项,让PHP自动跨页面传递session_id。
3)通过GET方法,隐藏表单传递session_id。
4)使用文件或者数据库存储session_id,在页面间传递中手动调用。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页