session和cookie的用法

xiaoxiao2021-02-28  14

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,’/’);

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

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

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’));

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

销毁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数组中的数据并没有销毁。

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

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的保存位置

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的值,默认值为否

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

转载请注明原文地址: https://www.6miu.com/read-2150137.html

最新回复(0)