Heim  >  Artikel  >  php教程  >  php中session的使用方法

php中session的使用方法

WBOY
WBOYOriginal
2016-06-08 17:24:331135Durchsuche

要使用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;
?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn