php中session的使用方法
要使用session需要PHP4.1以上的版本,而且需要把php.ini中的register_globle=Off设成register_globle=On,另外,session.cookie_path = / 这行不易更改.
PHP中的session默认情况下是使用客户端的Cookie,当客户端的Cookie被禁用时,会自动通过Query_String来传递.
php处理会话的函数一共有11个,我们详细介绍一下将要用到几个函数.
1、session_start
函数功能:开始一个会话或者返回已经存在的会话
函数原型:boolean session_start(void);
返回值:布尔值
session工作原理
首先,PHP为建立Session的用户产生一个独一无二的字符串,用来标志这个用户的session,一般将这个字符串称作Session Id.然后[sess]+Session Id为文件名(例如一个Session ID为111,那么文件名为sess_111)在服务器的文件系统中建立一个文件,在文件中保存用户在Session所定义的全局变量的变量名和值,然后再将Session Id作为一个名为PHPSession的Cookie保存在用户端的文件系统中.
然后,当用户再次连接服务器访问一个PHP脚本时,PHP从用户发来的PEESession这个Cookie中得到用户所在Session的Session Id,并根据Session Id从服务器的文件系统中保存Session信息的文件,最后从这个文件中读出用户在上次连接时所设置的全局变量的值.
因此,我们可以看到Session的工作原理和我们上一节所介绍的身份认证的工作原理是一样的,所不同的只是Session将信息保存在了服务器的文件系统中,而我们将信息保存在了数据库中,当然使用Session好处就是数据的保存和获取是由PHP自动完成的,而直接使用Cookie的话就需要自己动手进行数据的保存和获取.
Session利用Cookie的身份标志功能,将用户在浏览网站时需要保存的信息保存在服务器上。这样Session既克服了HTTP协议的缺陷,又防止了信息的泄漏,而且方便了编程者的使用,是一个非常好的解决方案,不过,Session的功能只有PHP4支持,PHP3是不支持Session的,因此使用PHP3进行网站构建的读者只能采用直接使用Cookie的方式.
session实例
在用session的时候,要先把php中的php.ini文件中session.sava.path项设置好,代码如下:
<?php // 启动 Session session_start(); // 声明一个名为 admin 的变量,并赋空值。 $_SESSION [ "admin" ] = null; ?> <?php // 表单提交后… $posts = $_POST ; // 清除一些空白符号 foreach ( $posts as $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 (! empty empty ( $userInfo )) { if ( $userInfo [ "username" ] == $username ) { // 当验证通过后,启动 Session session_start(); // 注册登陆成功的 admin 变量,并赋值 true $_SESSION [ "admin" ] = true; } else { die ([用户名密码错误]); } } else { die ([用户名密码错误]); } ?>我们在需要用户验证的页面启动 Session,判断是否登陆,代码如下:
<?php // 防止全局变量造成安全隐患 $admin = false; // 启动会话,这步必不可少 session_start(); // 判断是否登陆 if (isset( $_SESSION [ "admin" ]) && $_SESSION [ "admin" ] === true) { echo [您已经成功登陆]; } else { // 验证失败,将 $_SESSION["admin"] 置为 false $_SESSION [ "admin" ] = false; die ([您无权访问]); } ?> <?php session_start(); // 保存一天 $lifeTime = 24 * 3600; setcookie(session_name(), session_id(), time() + $lifeTime , [/]); ?> <?php session_start(); // 这种方法是将原来注册的某个变量销毁 unset( $_SESSION [ "admin" ]); // 这种方法是销毁整个 Session 文件 session_destroy(); ?>我们来手动设置 Session 的生存期,代码如下:
<?php session_start(); // 保存一天 $lifeTime = 24 * 3600; setcookie(session_name(), session_id(), time() + $lifeTime , [/]); ?>其实 Session 还提供了一个函数 session_set_cookie_params();来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用,代码如下:
<?php // 保存一天 $lifeTime = 24 * 3600; session_set_cookie_params( $lifeTime ); session_start(); $_SESSION [ "admin" ] = true; ?>查看更多关于php中session的使用方法 - php会话的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did26919