hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP问题 - 正文 请牢记本站网址www.sosophp.cn

php会话手艺重要包括哪些【php题目】

2019-11-26PHP问题搜搜PHP网64°c
A+ A-

本文主要解说php回话机制cookie和session。

cookie简介

Cookie是存储在客户端浏览器中的数据,我们经由过程Cookie来跟踪与存储用户数据。平常情况下,Cookie经由过程HTTP headers从服务端返回到客户端。多半web顺序都支撑Cookie的操纵,由于Cookie是存在于HTTP的标头当中,所以必需在其他信息输出之前举行设置,类似于header函数的运用限定。

PHP经由过程setcookie函数举行Cookie的设置,任何从浏览器发还的Cookie,PHP都邑自动的将他存储在$_COOKIE的全局变量当中,因而我们能够经由过程$_COOKIE['key']的情势来读取某个Cookie值。

PHP中的Cookie具有异常普遍的运用,常经常使用来存储用户的登录信息,购物车等,且在运用会话Session时一般运用Cookie来存储会话id来辨认用户,Cookie具有有用期,当有用期完毕今后,Cookie会自动的从客户端删除。同时为了举行平安掌握,Cookie还能够设置域跟途径,我们会在稍后的章节中细致的解说他们。

为了网站平安性起见,本站点暂时不供应Cookie变量显现功用,请自行在当地测试;

设置cookie

PHP设置Cookie最经常使用的要领就是运用setcookie函数,setcookie具有7个可选参数,我们经常使用到的为前5个:

name( Cookie名)能够经由过程$_COOKIE['name'] 举行接见

value(Cookie的值)

expire(逾期时刻)Unix时刻戳花样,默以为0,示意浏览器封闭即失效

path(有用处径)假如途径设置为'/',则全部网站都有用

domain(有用域)默许全部域名都有用,假如设置了'www.imooc.com',则只在www子域中有用

$value = 'test';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600);  //有用期一小时
setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //设置途径与域

PHP中另有一个设置Cookie的函数setrawcookie,setrawcookie跟setcookie基础一样,唯一的差异就是value值不会自动的举行urlencode,因而在须要的时刻要手动的举行urlencode。

setrawcookie('cookie_name', rawurlencode($value), time()+60*60*24*365);

由于Cookie是经由过程HTTP标头举行设置的,所以也能够直接运用header要领举行设置。

header("Set-Cookie:cookie_name=value");

cookie的删除与逾期时刻

经由过程前面的章节,我们相识了设置cookie的函数,然则我们却发明php中没有删除Cookie的函数,在PHP中删除cookie也是采纳setcookie函数来完成。

setcookie('test', '', time()-1);

能够看到将cookie的逾期时刻设置到当前时刻之前,则该cookie会自动失效,也就达到了删除cookie的目标。之所以这么设想是由于cookie是经由过程HTTP的标头来通报的,客户端依据服务端返回的Set-Cookie段来举行cookie的设置,假如删除cookie须要运用新的Del-Cookie来完成,则HTTP头就会变得复杂,实际上仅经由过程Set-Cookie就能够简朴明了的完成Cookie的设置、更新与删除。

相识道理今后,我们也能够直接经由过程header来删除cookie。

header("Set-Cookie:test=1393832059; expires=".gmdate('D, d M Y H:i:s \G\M\T', time()-1));

这里用到了gmdate,用来生成格林威治标准时刻,以便消除时差的影响。

session与cookie的异同

cookie将数据存储在客户端,建立起用户与服务器之间的联络,一般能够处理许多题目,然则cookie依然具有一些范围:

cookie相对不是太平安,轻易被盗用致使cookie诳骗

单个cookie的值最大只能存储4k

每次要求都要举行收集传输,占用带宽

session是将用户的会话数据存储在服务端,没有大小限定,经由过程一个session_id举行用户辨认,PHP默许情况下session id是经由过程cookie来保留的,因而从某种程度上来讲,seesion依赖于cookie。但这不是相对的,session id也能够经由过程参数来完成,只需能将session id通报到服务端举行辨认的机制都能够运用session。

运用session

在PHP中运用session异常简朴,先实行session_start要领开启session,然后经由过程全局变量$_SESSION举行session的读写。

session_start();
$_SESSION['test'] = time();
var_dump($_SESSION);

session会自动的对要设置的值举行encode与decode,因而session能够支撑恣意数据范例,包括数据与对象等。

session_start();
$_SESSION['ary'] = array('name' => 'jobs');
$_SESSION['obj'] = new stdClass();
var_dump($_SESSION);

默许情况下,session是以文件情势存储在服务器上的,因而当一个页面开启了session今后,会独有这个session文件,如许会致使当前用户的其他并发接见没法实行而守候。

删除与烧毁session

删除某个session值能够运用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,没法接见。

session_start();
$_SESSION['name'] = 'jobs';
unset($_SESSION['name']);
echo $_SESSION['name']; //提醒name不存在

假如要删除一切的session,能够运用session_destroy函数烧毁当前session,session_destroy会删除一切数据,然则session_id依然存在。

session_start();
$_SESSION['name'] = 'jobs';
$_SESSION['time'] = time();
session_destroy();

值得注意的是,session_destroy并不会马上的烧毁全局变量$_SESSION中的值,只要当下次再接见的时刻,$_SESSION才为空,因而假如须要马上烧毁$_SESSION,能够运用unset函数。

session_start();
$_SESSION['name'] = 'jobs';
$_SESSION['time'] = time();
unset($_SESSION);
session_destroy(); 
var_dump($_SESSION); //此时已为空

假如须要同时烧毁cookie中的session_id,一般在用户退出的时刻可能会用到,则还须要显式的挪用setcookie要领删除session_id的cookie值。

运用session来存储用户的登录信息

session能够用来存储多种范例的数据,因而具有许多的用处,经常使用来存储用户的登录信息,购物车数据,或许一些暂时运用的暂存数据等。

用户在登录胜利今后,一般能够将用户的信息存储在session中,平常的会零丁的将一些主要的字段零丁存储,然后一切的用户信息自力存储。

$_SESSION['uid'] = $userinfo['uid'];
$_SESSION['userinfo'] = $userinfo;

平常来讲,登录信息既能够存储在sessioin中,也能够存储在cookie中,他们之间的差异在于session能够轻易的存取多种数据范例,而cookie只支撑字符串范例,同时关于一些平安性比较高的数据,cookie须要举行花样化与加密存储,而session存储在服务端则平安性较高。

以上就是php会话手艺主要包括哪些的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
php会话手艺重要包括哪些【php题目】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: