session和cookie的用法

2 篇文章 0 订阅
本文详细介绍了Cookie和Session这两种会话变量的基本概念、应用场景及操作方法。包括如何创建、访问和销毁Cookie与Session,以及它们之间的区别。此外还讨论了禁用Cookie后的Session使用方法。
摘要由CSDN通过智能技术生成

cookie和session都是会话变量,主要作用都是在整个会话过程中,实现数据的跨页面访问。

会话变量的用途:

验证用户的身份(是否已经登录)
实现数据的跨页面访问(购物车功能等)

会话变量和普通变量的区别:

会话变量可以跨页面访问(超全局变量)
cookie会话变量只能保存基本数据类型(int  float  string bool)的变量值,session还可以保存数组(array)类型的值。

一、 cookie会话变量
1. 创建cookie
setcookie(name, value, 有效截止时间, 起作用的目录);
name:表示cookie的名称
value:表示cookie的值
有效截止时间:表示该cookie的失效时间,10位时间戳格式。默认值为0,表示有效期为直到该浏览器页面关闭。
起作用的目录:默认值为设置cookie的当前目录,’/’ 表示服务器根目录下的所有目录都起作用。
如:
setcookie(‘isLogin’,1,time()+60*60,’/’);
setcookie(‘username’,’jack’,time()+60*60,’/’);

  1. 访问cookie
    可直接访问预定义超全局变量 COOKIEecho _COOKIE[‘username’];

  2. 销毁cookie
    注意:unset() 无法销毁cookie;
    setcookie(name,”,time()-60,’/’);
    一般通过将cooki变量的值设为null或空字符串或0,并将cookie的有效截止时间设为已过期,来销毁cookie
    如:
    setcookie(‘isLogin’, 0, time()-60, ‘/’);
    setcookie(‘username’, null, time()-60, ‘/’);

  3. cookie的保存位置
    cookie数据是保存在客户端的浏览器中,安全性较差。
    但可以通过将cookie的名称和值进行加密来增强安全性。

二、session会话变量
1. 创建session
session_start(); 必须先使用函数session_start(),启动session(除非php.ini的配置中session.auto_start=1,session自动启动)
$$_SESSION[‘名称’]=值;
如:
session_start();
$_SESSION[‘isLogin’] = 1;
$_SESSION[‘username’] = ‘rose’;
$_SESSION[‘data’] = array(‘id’=>3, ‘loginTime’=>date(‘Y-m-d H:i:s’));

  1. 访问session
    session_start(); 必须先使用函数session_start(),启动session(除非php.ini的配置中session.auto_start=1,session自动启动)
    echo $_SESSION[‘username’];

  2. 销毁session
    session_start(); 必须先使用函数session_start(),启动session(除非php.ini的配置中session.auto_start=1,session自动启动)
    unset( SESSION[])sessionstart();unset( _SESSION[‘username’]);
    注意:虽然unset()可以销毁数组,但无法使用unset()销毁服务器上的当前会话session文件里的所有数据,如使用unset( SESSION) _SESSION数组,而并没有销毁session文件,session数据依然存在于服务器上。故使用unset()销毁session的时候,只能销毁某个具体的session键值对。

session_start();
session_destroy(); 该方法可以销毁当前会话的session文件,即把当前会话的所有session数据都销毁了。
注意:session_destroy()是直接销毁(删除)整个session文件,但由于调用该方法前,需要先调用session_start()启动session,此时在当前脚本中,如果使用预定义超全局变量 SESSION _SESSION数组中的数据并没有销毁。

  1. session的保存位置
    session数据文件是保存在服务器上的,安全性较好,一般是保存在服务器上的临时目录。
    如:session.save_path=”E:\xampp\tmp”

  2. PHP中操作session的相关函数
    bool session_start ( void )
    启动session(创建一个新的session或继续使用一个已存在的session文件),该函数会利用sessionid(sessionid通过cookie获取或通过get请求或post请求得到)来创建一个与sessionid关联的session文件或直接使用当前会话已存在的session文件,然后将session文件中的数据反序列化,并填充至超全局数组$_SESSION中。

string session_name ([ string $name ] )
获取或者设置当前的session名称,准确地说,应该是和当前session相关联的cookie的名称。该cookie中存放的是当前会话的sessionid。
如:PHPSESSID
注意:session_name()函数应该在session_start()之前调用。

int session_status ( void )
返回当前的session的状态

string session_id ([ string $id ] )
获取或者设置当前的sessionid

bool session_destroy ( void )
销毁(删除)当前会话的session文件

void session_unset ( void )
清空当前会话的session文件中的内容(但不会删除session文件),同时,清空$_SESSION全局数组。

void session_write_close ( void )
写入session数据,并关闭当前的session。

string session_save_path ([ string $path ] )
获取或者设置当前session的保存位置

  1. php.ini中关于session的配置
    session.save_handler=files 表示session的保存方式为文件方式,默认值
    session.save_path=”E:\xampp\tmp” 表示session的保存位置
    session.use_cookies=1 表示session会话是否要使用cookie(sessionid通过cookie获取),默认值为是
    session.use_only_cookies=0 表示是否强制仅仅使用cookie来存储和维护sessionid,默认值为否
    session.name=PHPSESSID 表示存储sessionid的cookie名称,默认值
    session.auto_start=0 表示是否自动启动session,默认值为否
    session.cookie_lifetime=0 表示和session相关联的cookie的生命周期,默认值为0,即直到浏览器关闭(会话结束)
    session.cookie_path=/ 表示和session相关联的cookie的起作用的目录,默认是服务器根目录下的所有目录都起作用。
    session.cookie_domain= 表示和session相关联的cookie起作用的域名
    session.gc_probability=1 表示session垃圾文件回收机制的概率,概率值的分子。默认值为1
    session.gc_divisor=1000 表示session垃圾文件回收机制的概率,概率值的分母。默认值为1000。和上面配合使用,概率为0.1%
    session.gc_maxlifetime=1440 表示session的有效时长,单位秒,默认值为24分钟,超过该时长的session数据被视为垃圾文件。
    session.use_trans_sid=0 表示是否通过url自动传递sessionid的值,默认值为否

  2. 禁用cookie后,如何使用session会话?
    session会话一般需要cookie的支持,因为当前会话的sessionid默认是通过客户端浏览器的cookie来存储和维护的,如果客户端禁用了cookie,我们就需要使用其他方式来管理sessionid,为此需要修改php.ini的相关配置,并通过URL传参的形式,将sessionid传递给服务器端,就可找到对应的session文件,从而实现session会话。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值