Maison  >  Article  >  php教程  >  php中session的使用方法

php中session的使用方法

WBOY
WBOYoriginal
2016-06-08 17:24:331172parcourir

要使用session需要PHP4.1以上的版本,而且需要把php.ini中的register_globle=Off设成register_globle=On。另外,session.cookie_path = / 这行不易更改。

<script>ec(2);</script>

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项设置好.

 代码如下 复制代码

// 启动 Session 
session_start();
// 声明一个名为 admin 的变量,并赋空值。
    $_SESSION["admin"] = null;
     ?>
// 表单提交后… 
$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($userInfo))
         {
            if ($userInfo["username"] == $username)
           {         // 当验证通过后,启动 Session  
             session_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(“您无权访问”); 
             }
             ?>
                           // 保存一天
               $lifeTime = 24 * 3600; 
               setcookie(session_name(), session_id(), time() + $lifeTime, “/”);
               ?>
// 这种方法是将原来注册的某个变量销毁
    unset($_SESSION["admin"]);
     // 这种方法是销毁整个 Session 文件
      session_destroy();
    ?>   
    我们来手动设置 Session 的生存期:
            // 保存一天
     $lifeTime = 24 * 3600;
      setcookie(session_name(), session_id(), time() + $lifeTime, “/”);
      ?>  
其实 Session 还提供了一个函数 session_set_cookie_params(); 来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用:
// 保存一天 
$lifeTime = 24 * 3600; 
session_set_cookie_params($lifeTime); 
session_start();
    $_SESSION["admin"] = true;
?>

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn