PHP SESSION 机制

原文来自

PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。

当你在浏览器访问一个网站的时候,网站的后台为你打开了一个回话,这个回话就是session。它可以存储你的一些重要的信息。它会分配给你一个ID,你何时启动它了,何时关闭它了。通过服务器上存储的信息,方便随后使用。它有这么多的好处强项。但是……当你关闭了这个网页。一切都回到了解放前,它忘记了你。唯有存储到数据库中,才能真正的做到它日后都记得你。

session的工作机制是:每一个访问者都有一个唯一的ID,并且基于UID来存储信息到服务器。UID存储在cookie中,通过URL可以传导。

有了这个唯一的ID,你在当前访问的网页中随处跳转它还是能够记住你的ID,从而实现给你提供你存储在服务器的准确信息(如:用户名,购物车等)。

使用session

使用session首先要确定你的服务器是否支持session。你可以通过 phpinfo()  查看PHP配置信息。找到看你的配置信息中是否存在session 模块上面的session_support 值为 enable 的则说明你能正常的使用session了。如果没有session这个模块你必须先去php.ini启用session 组件。

另外。php.ini 中session.save_handle = files,才能正常的使用session。

session_start()

session_start() 函数必须位于 <html> 标签之前,在session_start()前不允许有输出。

session_start()是session机制的开始。开始之后,session会开启垃圾回收机制,因为session是存放文件当中的,则不可能不回收,否则占用太多会导致一系列的系统问题。而PHP本身的垃圾回收机制对session来说是无效的,session的回收是指删除存储的文件。session回收的概率在php.ini中有定义。session.gc_probability系统默认的是1,但是有些系统的session.gc_probability值是0,这也就是说回收的概率是0,这时系统会通过cron脚本来实现垃圾回收机制。

另外,session配置项中有session.gc_maxlifetime 这么一项,这时配置session过期时长的,默认是1440,24分钟。这个不建议设置的太小,因为session回收需要根据它。

session开启之后,便可以为session赋值。服务器会存储session变量。

存储和取回session 变量的正确方式是使用 $_SESSION 变量。

存储Session

<?php
$_SESSION[‘key‘]  = ‘value‘;
?>

新添加的key值,这个值则会存储在内存当中,当脚本执行完毕后,session就会被存储到指定的session_id 文件。如果已经存在,则可能需要创建新的文件。在php.ini设定的回收时间内会销毁session_id的文件。

读取Session

读取session 方式如下:

<?php
$_SESSION[‘key‘];
?>

session关键字$_SESSION[‘键值‘];

销毁Session

<?php
unset($_SESSION[‘key‘]); //销毁某个指定键值
unset($_SESSION)         //销毁整个session
?>

删除某些 session 数据,除了可以使用 unset() ,还可以使用 session_destroy() 函数。

案例:

利用session实现用户登录和注销

session的特性之一是安全,所以用它来实现登录将会是一个很好的方案。整个登录的流程大概如下。

用户进入登录页面===>>输入正确的用户账户密码===>>服务器端脚本验证成功后,开启一个session回话,存储用户ID($_SESSION[‘uid‘])和用户名($_SESSION[‘user_name‘])===>>跳转它网站中的其他页面,利用($_SESSION[‘user_name‘])显示用户姓名,必要时可以通过$_SESSION[‘u_id‘]等到用户ID===>>用户退出登录( unset($_SESSION) )

登录页面中包含以下代码:

<?php
session_start();//开启session
$_SESSION[‘user_name‘] = $_POST[‘user_name‘];
?>
<html>
登录表单
</html>

登录成功跳转之后。在其他的页面,如选购商品、生成交易订单等页面,需要用到用户信息的页面可以使用以下方式获得用户信息

<?php
session_start(); //首先需要开启session

//读取用户信息
$user_name = $_SESSION[‘user_name‘];

//根据用户名查询到这个用户的信息

?>

之后如果用户直接退出了浏览器,或者关闭了网站。session在指定的回收时间内,session将会自动注销回收。若是用户想要手动退出呢,可以:

<?php
session_start();
unset($_SESSION);//注销所有session
?>

这样便是一个基本的用户登录注销系统流程。其中还有很多地方可以做安全处理的。这里将不一一道来。原文来自

时间: 2024-10-10 23:42:09

PHP SESSION 机制的相关文章

Cookie/Session机制详解

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. 1.1  Cookie机制 在程序中,会话跟踪是很重要的事情.理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个

【转载】Cookie/Session机制详解

[本文转自]http://blog.csdn.net/fangaoxin/article/details/6952954/ 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. 1.1  Cookie机制 在程

Session机制详解

虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术.本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答.     一.术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的. session,中文经常翻译为会话,

PHP的Session机制

客户端浏览器和服务器之间通信使用的http协议是一种无状态的协议,在它看来,客户端发起的每个请求都是独立.没有关联的.然而,在实际的Web应用开发中,服务器却经常需要根据用户以往的一些状态或数据对请求做出相应的应答,所以需要记录用户的某些状态或数据.Session就是用于保持客户端请求和服务器应答之间的上下文联系,本文主要介绍PHP的Session机制. PHP的Session机制的工作过程大致是这样子的:当客户端浏览器向服务器发起一个请求的时候,服务器会检查请求数据包头部中的“Cookie”字

理解session机制

理解session机制 session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含sessio

session机制详解以及session的相关应用

session是web开发里一个重要的概念,在大多数web应用里session都是被当做现成的东西,拿来就直接用,但是一些复杂的web应用里能拿来用的session已经满足不了实际的需求,当碰到这样的情况时候我们需要更加深入的理解session的机制,本文将梳理下session的相关知识,为设计可替代web容器自带的session机制打个基础. 1.1 session的概念 在计算机专业术语里:session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册入系统到注销系统之间所经过的时

JavaEE session机制

JavaEE session机制 Http协议: 在讲session之前,必须说下Http协议,HTTP是一个client和server端请求和应答的标准(TCP).由HTTPclient发起一个请求,建立一个到server指定port(默认是80port)的TCP连接.HTTPserver则在那个port监听client发送过来的请求.一旦收到请求,server(向client)发回一个状态行,比方"HTTP/1.1200 OK",和(响应的)消息,消息的消息体可能是请求的文件.错误

Session机制

一: 1.介绍 对于会话与状态管理,有两种方式,cookie与session. 其中,cookie机制采用客户端保持cookie的方案. 而,session机制采用的是服务器保持Http状态信息的方案. 2.响应方式 以cookie的方式进行实现的. 浏览器打开,对服务器进行访问,这时因为第一次进行访问,所以没有sessionId,所以服务端会新建一个HttpSession,将sessionId以set-cookie的方式将sessionId返回给浏览器,在这次会话中,浏览器进行下次访问服务端时

理解Cookie和Session机制

转自:http://my.oschina.net/xianggao/blog/395675 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. Cookie机制 Cookie技术是客户端的解决方案,Cooki

理解Cookie和Session机制(转)

目录[-] Cookie机制 什么是Cookie 记录用户访问次数 Cookie的不可跨域名性 Unicode编码:保存中文 BASE64编码:保存二进制图片 设置Cookie的所有属性 Cookie的有效期 Cookie的修改.删除 Cookie的域名 Cookie的路径 Cookie的安全属性 JavaScript操作Cookie 案例:永久登录 Session机制 什么是Session 实现用户登录 Session的生命周期 Session的有效期 Session的常用方法 Session