您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > php中Session使用方法详解
php中Session使用方法详解篇一:php里session的用法php里session的用法(超级经典)php中session的用法PHP中的session默认情况下是使用客户端的Cookie。当客户端的Cookie被禁用时,会自动通过Query_String来传递。Php处理会话的函数一共有11个,我们详细介绍一下将要用到几个函数。1、session_start函数功能:开始一个会话或者返回已经存在的会话。函数原型:booleansession_start(void);返回值:布尔值功能说明:这个函数没有参数,且返回值均为true。最好将这个函数置于最先,而且在它之前不能有任何输出,否则会报警,如:Warning:Cannotsendsessioncachelimiter-headersalreadysent(outputstartedat/usr/local/apache/htdocs/cga/member/1.php:2)in/usr/local/apache/htdocs/cga/member/1.phponline32、session_register函数功能:登记一个新的变量为会话变量函数原型:booleansession_register(stringname);返回值:布尔值。功能说明:这个函数是在全局变量中增加一个变量到当前的SESSION中,参数name就是想要加入的变量名,成功则返回逻辑值true。可以用$_SESSION[name]或$HTTP_SESSION_VARS[name]的形式来取值或赋值。3、session_is_registered函数功能:检查变量是否被登记为会话变量。函数原型:boobeansession_is_registered(stringname);功能说明:这个函数可检查当前的session之中是否已有指定的变量注册,参数name就是要检查的变量名。成功则返回逻辑值true。4、session_uegister函数功能:删除已注册的变量。函数原型:booleansession_session_uegister(stringname);返回值:布尔值功能说明:这个函数在当前的session之中删除全局变量中的变量。参数name就是欲删除的变量名,成功则返回true.5、Session_destroy函数功能:结束当前的会话,并清空会话中的所有资源。函数原型:booleansessiondestroy(void);返回值:布尔值。功能说明:这个函数结束当前的session,此函数没有参数,且返回值均为true上面介绍函数下文将会用到,但还有一些有关session的函数也介绍一下:6、session_encode函数功能:sesssion信息编码函数原型:stringsession_encode(void);返回值:字符串功能说明:返回的字符串中包含全局变量中各变量的名称与值,形式如:a|s:12:itisatest;c|s:4:lala;a是变量名s:12代表变量a的值itisatest的长度是12变量间用分号”;”分隔。7、session_decode函数功能:sesssion信息解码函数原型:booleansession_decode(stringdata)功能说明:这个函数可将session信息解码,成功则返回逻辑值true8、session_name函数功能:存取当前会话名称函数原型:booleansession_name(string[name]);返回值:字符串功能说明:这个函数可取得或重新设置当前session的名称。若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name9、session_id函数功能:存取当前会话标识号函数原型:booleansession_id(string[id]);返回值:字符串功能说明:这个函数可取得或重新设置当前存放session的标识号。若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id10、session_unset函数功能:删除所有已注册的变量。函数原型:voidsession_unset(void)返回值:布尔值功能说明:这个函数和Session_destroy不同,它不结束会话。就如同用函数session_uegister逐一注销掉所有的会话变量。编程思路在社区、论坛中,我们常能看到当前在线的会员,使访问者有宾至如归之感。但这种程序是怎么做出来的呢?流程如下:建表user,保存注册用户信息。字段类型备注useridInt(10)用户序列号auto_increment关键字usernameVarchar(50)用户匿称userpwdVarchar(50)密码emailVarchar(50)电子信箱oicqVarchar(50)OICQ号signaturemediumtext签名imgurlVarchar(50)头像joindateVarchar(50)加入时间建类文件user.php定义函数exist($username)确认新注册用户是不是已经存在nsert($username,$userpwd,$email,$oicq,$imgurl,$signature)插入注册用户update($userid,$username,$userpwd,$email,$oicq,$imgurl,$signature)更新用户数据get_from_condition($con)返回满足查询条件的记录集建表session。当用户登录时即向此表插入新记录,离开或超时后删除记录,保证表中保存的是当前在线的用户。字段类型备注sessionidInt(10)序列号auto_increment关键字useridInt(10)用户序列号取自user表ipaddressVarchar(50)Ip地址lastactivityInt(10)篇二:php使用session的详细介绍php使用session的详细介绍对比起Cookie,Session是存储在服务器端的会话,相对安全,并且不像Cookie那样有存储长度限制,本文简单介绍Session的使用。由于Session是以文本文件形式存储在服务器端的,所以不怕客户端修改Session内容。实际上在服务器端的Session文件,PHP自动修改Session文件的权限,只保留了系统读和写权限,而且不能通过ftp修改,所以安全得多。对于Cookie来说,假设我们要验证用户是否登陆,就必须在Cookie中保存用户名和密码(可能是md5加密后字符串),并在每次请求页面的时候进行验证。如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能只做一次验证。为什么呢?因为客户端Cookie中的信息是有可能被修改的。假如你存储$admin变量来表示用户是否登陆,$admin为true的时候表示登陆,为false的时候表示未登录,在第一次通过验证后将$admin等于true存储在Cookie,下次就不用验证了,这样对么?错了,假如有人伪造一个值为true的$admin变量那不是就立即取的了管理权限么?非常的不安全。而Session就不同了,Session是存储在服务器端的,远程用户没办法修改Session文件的内容,因此我们可以单纯存储一个$admin变量来判断是否登陆,首次验证通过后设置$admin值为true,以后判断该值是否为true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。而且可以减少每次为了验证Cookie而传递密码的不安全性了(Session验证只需要传递一次,假如你没有使用SSL安全协议的话)。即使密码进行了md5加密,也是很容易被截获的。当然使用Session还有很多优点,比如控制容易,可以按照用户自定义存储等(存储于数据库)。我这里就不多说了。Session在php.ini是否需要设置呢?一般不需要的,因为并不是每个人都有修改php.ini的权限,默认Session的存放路径是服务器的系统临时文件夹,我们可以自定义存放在自己的文件夹里,这个稍后我会介绍。开始介绍如何创建Session。非常简单,真的。启动Session会话,并创建一个$admin变量://启动Sessionsession_start();//声明一个名为admin的变量,并赋空值。$_SESSION[admin]=null;如果你使用了Seesion,或者该PHP文件要调用Session变量,那么就必须在调用Session之前启动它,使用session_start()函数。其它都不需要你设置了,PHP自动完成Session文件的创建。执行完这个程序后,我们可以到系统临时文件夹找到这个Session文件,一般文件名形如:sess_4c83638b3b0dbf65583181c2f89168ec,后面是32位编码后的随机字符串。用编辑器打开它,看一下它的内容:admin|N;一般该内容是这样的结构:变量名|类型:长度:值;并用分号隔开每个变量。有些是可以省略的,比如长度和类型。我们来看一下验证程序,假设数据库存储的是用户名和md5加密后的密码:login.php//表单提交后...$posts=$_POST;//清除一些空白符号foreach($postsas$key=$value){$posts[$key]=trim($value);}$password=md5($posts[password]);$username=$posts[username];$query=SELECT`username`FROM`user`WHERE`password`='$password';//取得查询结果$userInfo=$DB-getRow($query);if(!emptyempty($userInfo)){if($userInfo[username]==$username){//当验证通过后,启动Sessionsession_start();//注册登陆成功的admin变量,并赋值true$_SESSION[admin]=true;}else{die(用户名密码错误);}}else{die(用户名密码错误);}我们在需要用户验证的页面启动Session,判断是否登陆://防止全局变量造成安全隐患$admin=false;//启动会话,这步必不可少session_start();//判断是否登陆if(isset($_SESSION[admin])&&$_SESSION[admin]===true){echo您已经成功登陆;}else{//验证失败,将$_SESSION[admin]置为false$_SESSION[admin]=false;die(您无权访问);}是不是很简单呢?将$_SESSION看成是存储在服务器端的数组即可,我们注册的每一个变量都是数组的键,跟使用数组没有什么分别。如果要登出系统怎么办?销毁Session即可。session_start();//这种方法是将原来注册的某个变量销毁unset($_SESSION['admin']);//这种方法是销毁整个Session文件session_destroy();Session能否像Cookie那样设置生存周期呢?有了Session是否就完全抛弃Cookie呢?我想说,结合Cookie来使用Session才是最方便的。Session是如何来判断客户端用户的呢?它是通过SessionID来判断的,什么是SessionID,就是那个Session文件的文件名,SessionID是随机生成的,因此能保证唯一性和随机性,确保Session的安全。一般如果没有设置Session的生存周期,则SessionID存储在内存中,关闭浏览器后该ID自动注销,重新请求该页面后,重新注册一个SessionID。如果客户端没有禁用Cookie
本文标题:php中Session使用方法详解
链接地址:https://www.777doc.com/doc-3380502 .html