php专区

 首页 > php专区 > 正则表达式 > php中session的使用方法 - php会话

php中session的使用方法 - php会话

分享到:
【字体:
导读:
          要使用session需要PHP4 1以上的版本,而且需要把php ini中的register_globle=Off设成register_globle=On,另外,session cookie_path = 这行不易更改 PHP中的session默认情况下是使用客户端的Coo...

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项设置好,代码如下:

  1. // 启动 Session   
  2. session_start(); 
  3. // 声明一个名为 admin 的变量,并赋空值。 
  4.     $_SESSION["admin"] = null; 
  5.      ?> 
  6. // 表单提交后…   
  7. $posts = $_POST;   
  8. // 清除一些空白符号   
  9. foreach ($posts as $key => $value)   
  10. {       $posts[$key] = trim($value);     } 
  11. $password = md5($posts["password"]); 
  12.      $username = $posts["username"]; 
  13.       $query = “SELECT `username` FROM `user` WHERE `password` = ‘$password’”; 
  14.      // 取得查询结果 
  15.       $userInfo = $DB->getRow($query); 
  16.        if (!emptyempty($userInfo)) 
  17.          { 
  18.             if ($userInfo["username"] == $username
  19.            {         // 当验证通过后,启动 Session    
  20.              session_start();      
  21.              // 注册登陆成功的 admin 变量,并赋值 true    
  22.                $_SESSION["admin"] = true;   
  23.           }     
  24.        else    
  25.         {       
  26.             die(“用户名密码错误”);    
  27.         }   
  28.       }   
  29.        else 
  30.         {     
  31.            die(“用户名密码错误”); 
  32.          } 
  33. ?> 

我们在需要用户验证的页面启动 Session,判断是否登陆,代码如下:

  1.            // 防止全局变量造成安全隐患 
  2.             $admin = false;   
  3.          // 启动会话,这步必不可少   
  4.          session_start(); 
  5.           // 判断是否登陆 
  6.            if (isset($_SESSION["admin"]) && $_SESSION["admin"] === true) 
  7.              {     
  8.               echo “您已经成功登陆”;   
  9.            } 
  10.             else   
  11.             {       // 验证失败,将 $_SESSION["admin"] 置为 false 
  12.                  $_SESSION["admin"] = false;   
  13.                 die(“您无权访问”);   
  14.              } 
  15.              ?> 
  16.              
  17.               // 保存一天 
  18.                $lifeTime = 24 * 3600;   
  19.                setcookie(session_name(), session_id(), time() + $lifeTime, “/”); 
  20. ?> 
  21. // 这种方法是将原来注册的某个变量销毁 
  22.     unset($_SESSION["admin"]); 
  23.      // 这种方法是销毁整个 Session 文件 
  24.       session_destroy(); 
  25.     ?>    

我们来手动设置 Session 的生存期,代码如下:

  1. session_start(); 
  2.   // 保存一天 
  3. $lifeTime = 24 * 3600; 
  4.  setcookie(session_name(), session_id(), time() + $lifeTime, “/”); 
  5.  ?> 

其实 Session 还提供了一个函数 session_set_cookie_params();来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用,代码如下:

  1. // 保存一天   
  2. $lifeTime = 24 * 3600;   
  3. session_set_cookie_params($lifeTime);   
  4. session_start(); 
  5. $_SESSION["admin"] = true; 
  6. ?> 
分享到:
php session防url攻击方法 - php会话
php session防url攻击方法 session 跟踪,可以很方便地避免上述情况的发生,php session防url攻击方法代码如下:   http://example.org/reset.php?user=php&email=chris%40example.org 如果reset.php信任了用户提供的这些信息,这就是一个语义URL 攻击漏洞,在此情况下,系统将会为php 帐号产生一个...
PHP中设置、使用、删除Cookie详解 - php...
PHP中设置、使用、删除Cookie详解 cookie语法 int SetCookie(string name,string value,int expire,string path,string domain, int secure); 在同一个页面设置Cookie,实际是从后往前,所以如果要在插入一个新的Cookie之前删掉一个,你必须先写插入的语句,再写删除的语句,否则可能会出现不希...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……