会话技术

2018-04-18  本文已影响0人  始于原子

cookie

// 添加cookie
setcookie(COOKIE名,COOKIE值);

// 修改cookie
setcookie(COOKIE名,COOKIE值);

// 删除cookie,实际是将cookie设置为空即可
setcookie(COOKIE名,'');

// 获取cookie
var_dump($_COOKIE);

// 完整版添加cookie
setcookie(COOKIE名,COOKIE值,过期时间,有效路径,有效域名,是否安全传输,httponly);
setcookie(COOKIE名,COOKIE值,time()+1800,'/','www.baidu.com',false,true);

COOKIE参数说明

  • 有效期:默认情况一个会话周期为从新增该条COOKIE到浏览器关闭为止
  • 有效路径:默认情况表示当前程序所在目录及其子目录有效
  • 有效域名:默认情况表示当前域名及其子域名有效
  • 是否安全传输:默认情况表示http或https下都有效,如果将值设置为true,则表示只有在https下才有效
  • httponly:如果设置为true,则表示只允许原程序脚本代码进行操作

COOKIE技术的局限性

  • COOKIE数据保存在浏览器端(用户机器上),不可控因素高,安全性相对比较低
  • 每次请求都会携带所有的COOKIE数据,如果数据量大,将会占用大量的带宽,降低网站加载效率

session

// 开启session
session_start();

// 添加和修改session
$_SESSION['session名'] = 'session值';

// 删除session
unset( $_SESSION['session名'] );

// 查看session
var_dump( $_SESSION );

销毁SESSION数据(区)/将该用户的所有session数据都清除

session_destroy();

SESSION 参数设置

  • 有效期:默认情况一个会话周期为从新增该条COOKIE到浏览器关闭为止
  • 有效路径:默认情况下是网站的根目录及其子目录下都有效
  • 有效域名:默认情况表示当前域名及其子域名有效
  • 是否安全传输:默认情况表示http或https下都有效,如果将值设置为true,则表示只有在https下才有效
  • httponly:session无效

修改session参数 可以通过php.ini文件修改

; 有效期
session.cookie_lifetime = 0

; 有效路径
session.cookie_path = /

; 有效域
session.cookie_domail =

; httponly属性
session.cookie_httponly =

; 是否安全传输
session.cookie_secure =

程序中设置SESSION属性(推荐)

// 有效期直接设置一个过期秒数即可
session_set_cookie_params(有效期,有效路径,有效域,是否安全传输,httponly);

禁用cookie后如何session

在禁用COOKIE后,想要正常使用SESSION,就必须依赖于php.ini中的两个配置项的配置

; 表示SESSION技术的实现是否需要依赖COOKIE 1表示是 0表示否
session.use_only_cookies = 0

; 表示是否允许使用表单传值的方式传递PHPSESSID 0表示否 1表示是
session.use_trans_sid = 1

如果use_only_cookies设置为1,则use_trans_sid必须设置为0,反之亦然。

// 传递页面
session_start();
$_SESSION['name'] = 'zjlsp';
header('Refresh:3;url=http://wwwbaidu.com/index.php?SESSIONID='.$PHPSESSID);
// 接收页面
$SESSIONID = $_GET['SESSIONID'];
session_id($SESSIONID);
session_start();
var_dump($_SESSION);
上一篇下一篇

猜你喜欢

热点阅读