session基本用法实例

复制代码 代码如下:

// page1.php

session_start();

echo'Welcome to page #1';

/* 创建session变量并给session变量赋值*/$_SESSION['favcolor'] = 'green';

$_SESSION['animal'] = 'cat';

$_SESSION['time'] = time();

// 如果客户端使用cookie,可直接传递session到page2.php

echo'page 2';

// 如果客户端禁用cookie

echo'page 2';

/*

默认php5.2.1下,SID只有在cookie被写入的同时才会有值,如果该session

对应的cookie已经存在,那么SID将为(未定义)空*/

?>

// page2.php

session_start();

print$_SESSION['animal']; // 打印出单个session

var_dump($_SESSION); // 打印出page1.php传过来的session值

?>

2.3 使用session函数控制页面缓存.

很多情况下,我们要确定我们的网页是否在客户端缓存,或要设置缓存的有效时间,

比如我们的网页上有些敏感内容并且要登录才能查看,如果缓存到本地了,可以直

接打开本地的缓存就可以不登录而浏览到网页了.

使用session_cache_limiter('private');可以控制页面客户端缓存,必须在

session_start()之前调用.

端缓存控制.

控制客户端缓存时间用session_cache_expire(int);单位(s).也要在

session_start()前调用.

这只是使用session的情况下控制缓存的方法,我们还可以在header()中控制控制

页面的缓存.

2.4 删除session

要三步实现.

session_destroy(); // 第一步: 删除服务器端session文件,这使用setcookie

(session_name(),'',time()-3600); // 第二步: 删除实际的session:

$_SESSION= array(); // 第三步: 删除$_SESSION全局变量数组?>

2.5 session在PHP大型web应用中的使用对于访问量大的站点,用默认的session存

贮方式并不适合,目前最优的方法是用数据库教程存取session.这时,函数bool

session_set_save_handler( callbackopen, callbackclose, callbackread,

callbackwrite, callbackdestroy, callbackgc )就是提供给我们解决这个问题

的方案.

该函数使用的6个函数如下:

1. bool open() 用来打开会话存储机制,

2. bool close() 关闭会话存储操作.

3. mixde read() 从存储中装在session数据时使用这个函数4. bool write() 将

给定session ID的所有数据写到存储中5. bool destroy() 破坏与指定的会话ID

相关联的数据6. bool gc() 对存储系统中的数据进行垃圾收集例子见php手册

session_set_save_handler() 函数.

如果用类来处理,用session_set_save_handler(

array('className','open'),

array('className','close'),

array('className','read'),

array('className','write'),

array('className','destroy'),

array('className','gc'),

)

调用className类中的6个静态方法.className可以换对象就不用调用静态方法,但

是用静态成员不用生成对象,性能更好.

2.6 常用session函数:

bool session_start(void); 初始化session

bool session_destroy(void): 删除服务器端session关联文件。

stringsession_id() 当前session的id

stringsession_name() 当前存取的session名称,也就是客户端保存session ID的

cookie名称.默认PHPSESSID。arraysession_get_cookie_params() 与这个

session相关联的session的细节.

stringsession_cache_limiter() 控制使用session的页面的客户端缓存ini

session_cache_expire() 控制客户端缓存时间bool session_destroy() 删除服

务器端保存session信息的文件void session_set_cookie_params( int lifetime

[, stringpath [, stringdomain [, bool secure [, bool httponly]]]] )设置

与这个session相关联的session的细节bool session_set_save_handler(

callbackopen, callbackclose, callbackread, callbackwrite,

callbackdestroy, callbackgc )定义处理session的函数,(不是使用默认的方式)

bool session_regenerate_id([bool delete_old_session]) 分配新的session

id

2.7 session安全问题攻击者通过投入很大的精力尝试获得现有用户的有效会话

ID,有了会话id,他们就有可能能够在系统中拥有与此用户相同的能力.

因此,我们主要解决的思路是效验session ID的有效性.

if(!isset($_SESSION['user_agent'])){

$_SESSION['user_agent'] = $_SERVER['REMOTE_ADDR'].$_SERVER

['HTTP_USER_AGENT'];

}

/* 如果用户session ID是伪造*/elseif($_SESSION['user_agent'] !=

$_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) {

session_regenerate_id();

}

?>

2.8 Session通过cookie传递和通过SID传递的不同:

在php5.2.1的session的默认配置的情况下,当生成session的同时,服务器端将在

发送header set-cookie同时生成预定义超级全局变量SID(也就是说,写入cookie

和抛出SID是等价的.),当$_COOKIE['PHPSESSID']存在以后,将不再写入cookie,也

不再生成超级全局变量SID,此时,SID将是空的.

2.9 session使用实例<?php

/**

* 效验session的合法性*

*/functionsessionVerify() {

if(!isset($_SESSION['user_agent'])){

$_SESSION['user_agent'] = MD5($_SERVER['REMOTE_ADDR']

.$_SERVER['HTTP_USER_AGENT']);

}

/* 如果用户session ID是伪造,则重新分配session ID */elseif($_SESSION

['user_agent'] != MD5($_SERVER['REMOTE_ADDR']

. $_SERVER['HTTP_USER_AGENT'])) {

session_regenerate_id();

}

}

/**

* 销毁session

* 三步完美实现,不可漏*

*/functionsessionDestroy() {

session_destroy();

setcookie(session_name(),'',time()-3600);

$_SESSION= array();

}

?>

php session不可用,php session 使用与安全相关推荐

  1. Nginx+Tomcat实现高可用和Session会话共享

    一.简介 对于生产环境有了一定规模的tomcat集群业务来说,要实现session会话共享,比较稳妥的方式就是使用数据库持久化session.为什么要持久化session(共享session)呢?因为 ...

  2. Spring Session - Cookie VS Session VS Token 以及 Session不一致问题的N种解决方案

    文章目录 Cookie VS Session VS Token History Cookie Session Token Session不一致问题 Session不一致解决方案 nginx sessi ...

  3. 什么是Cookie和Session?—— Cookie和Session的区别?—— 一文教你理解清楚什么是Cookie和Session,以及常见的开发面试问题?

    cookie和session区别 cookie和session 背景说明 1.cookie 1.1.定义 1.2.作用 1.3.组成(种类和参数) 1.3.1.会话 Cookies .永久性 Cook ...

  4. Javaweb Session与Cookie(自定义Session)

    课程目标: 熟悉Cookie.Session底层实现原理.自定义缓存.自定义Token.表单重复提交解决方案.Servlet之Fileter解决XSS攻击. 一..会话管理入门 1.1 生活中会话 我 ...

  5. 第十八章 CSP Session 管理 - 与 CSP.Session 的Sessions

    文章目录 第十八章 CSP Session 管理 - 与 CSP.Session 的Sessions 与 `CSP.Session` 的`Sessions` Session 会话创建 `Session ...

  6. spring session 退出登录 清理session

    2019独角兽企业重金招聘Python工程师标准>>> spring session 退出登录 清理session 博客分类: spring /*** Allows creating ...

  7. java session 作用范围_ssm项目session使用及其作用域问题

    这两天由于自己在前端用到ajax发起异步更新请求,发现ajax会暴露后端的接口地址,这个问题当然是避免不了的啦,前端都是明文.可怜于是就在百度.谷歌.QQ群里各种查询各种提问题,都说只能通过安全验证去 ...

  8. ajax得到session,Ajax如何使用Session

    在Ajax中有时会使用到Session,在aspx.cs文件这样获取: string name = Session["name"]; 但是在Ajax中就不能这样获取Session, ...

  9. Nhibernate中session的状态与session.connection.state状态的差别的解释

    在项目中用到了nhibernate,但是需要判断数据连接的状态,在NHIbernate的文档中找了半天,英文的中文的都看了一遍,都没找到相关的说明 .后来在Hibernate的论坛上才找到了一些说明. ...

  10. Cookie和Session-学习笔记03【Session快速入门、Session细节】

    Java后端 学习路线 笔记汇总表[黑马程序员] Cookie和Session-学习笔记01[Cookie_快速入门.Cookie_细节] Cookie和Session-学习笔记02[Cookie案例 ...

最新文章

  1. 关于 sql server 基本使用的建议
  2. linux安装软件不同用户名密码,Linux的安装和基本命令
  3. Win7命令行局域网发消息图解
  4. [网络安全提高篇] 一〇二.Metasploit技术之基础用法万字详解及防御机理
  5. 回溯算法之购物车(0-1 背包问题)
  6. 利用Kinect将投影变得可直接用手操控
  7. 莫烦Matplotlib可视化第四章多图合并显示代码学习
  8. 读他:男人最怕听的十句话
  9. Linux系统编程7:入门篇之Linux项目自动化构建工具-Make/Makefile的超强使用指南
  10. java android长连接_基于Java Socket的自定义协议,实现Android与服务器的长连接(一)...
  11. 【numpy】numpy.random.uniform()函数
  12. android 正方形按钮,Android《FloatingActionButton》
  13. 详解Python中函数和模块的特殊属性__annotations__
  14. jsp 与html 如何结合使用方法,jsp中如何写javascript?
  15. 深入PHP变量存储结构
  16. Spring使用经验之Listener综述
  17. 从Python.org下载Python安装包下载很慢
  18. 计算机监控系统sacad,一套幼儿园智能化弱电CAD设计图,可以作为投标技术文件模板...
  19. android中界面布局文件放在,android界面布局详解.doc
  20. 汽车HUD抬头显示全产业链深度解析报告

热门文章

  1. Java魔法堂:JVM的运行模式
  2. 【转】每天一个linux命令(28):tar命令
  3. 「leetcode」 1382. 将二叉搜索树变平衡:【构造平衡二叉搜索树】详解
  4. 「leetcode」454.四数相加II:其实需要哈希的地方都能找到map的身影
  5. 苹果mac3D模型渲染软件:KeyShot
  6. 如何使用MacClean在Mac上释放磁盘空间?
  7. 如何开启/关闭Pages文稿上的字数统计功能?
  8. 手机界的革命-云手机(华为云)
  9. Docker 开篇 1 | 树莓派中搭建Docker
  10. JavaScript-2.4 改进的Hello程序,使用div,---ShinePans