Blogger Information
Blog 35
fans 0
comment 0
visits 27394
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
详解session
小的博客
Original
856 people have browsed it

一;什么是SESSION;
          将用户会话信息保存在服务器端使用session
            1. session保存到服务器端,目录在php.ini文件中
            2. session的创建,读取,删除都是用超全局变量$_SESSION
            3. 使用session之前,必须用session_start()开启会话
            4. 每个用户会被分配一个唯一的session_id,访问服务器会带上这个参数
            5. php默认session是基于cookie的,所以session_id存在cookie中
           6. session是一个32位的字符串,默认生存周期为1440秒,24分钟,这个数据可修改

session_status(); 未启用返回1,已启用返回2,可用它来检测session启用状态

session_name(); 查看session_id的名字:PHPSESSID

所以可以通过检查客户端是否存在PHPSESSID这个cookie变量来检测是否存在 session

SESSION的清除

 清除全部session
unset($_SESSION);
  用清除cookie的方法来清除
setcookie(session_name(), '',time()-10000);
   用专用函数来清除
session_destroy();

二;以下的PHP文档中的代表是用来演示session的用法;验证用户登录信息;如果验证通过则表示登录成功将用户的信息写入session中保存;

<?php
 //导入头部
 require 'header.php';
 if($_SERVER['REQUEST_METHOD']=='POST'){
  //验证用户名和密码
  if(empty($_POST['name'])){
   echo '<script>alert("用户名不能为空")</script>';
  }else{
   $name=htmlspecialchars(trim($_POST['name']));
  }
  if(empty($_POST['password'])){
   echo '<script>alert("密码不能为空")</script>';
  }else{
   $password=htmlspecialchars(trim($_POST['password']));
  }
  if($name && $password){
  //生成pdo对象连接数据库 
  try{
   $pdo=new PDO('mysql:host=localhost;dbname=demo;charset=utf8','root','root');
   //贮备好pdo 预处理的查询语句
   $sql="SELECT `name`,`password` FROM `user1` WHERE `name`=:name AND `password`=sha1(:password)";
   //生成pdo预处理对象使用的是pdo对象的prepare方法
   $pdoStmt=$pdo->prepare($sql);
   //参数绑定使用的是pdoStament对象的bindParam()方法,第一个参数是占位符名称第二个参数一定要是一个变量
   $pdoStmt->bindParam(':name',$name,PDO::PARAM_STR);
   $pdoStmt->bindParam(':password',$password,PDO::PARAM_STR);
   //执行;使用的是pdoStament中的execute()方法;成功返回true 失败返回false
   $res=$pdoStmt->execute();
   if(true==$res){
    if($pdoStmt->rowCount()==1){//如果查询用户表中的用户信息为一条则表示登录成功
     //写入session;
     session_start();//开启session;
     $_SESSION['name']=$name;
     $_SESSION['password']=$password;
     //写入session之后登录成功用户跳转至admin.php页面;
     echo '<script>alert("登录成功");location.href="admin.php"</script>';
    }else{
     echo '<script>alert("用户名和密码不正确请从新输入")</script>';
    }
   }else{
    print_r($pdoStmt->errorInfo());
   }
  }catch(PDOException $e){
   $e->getMessage();
   die();
  }
  
  }else{
   echo '<script>alert("没有输入用户名和密码,请检查")</script>';
  }
 }
 //ppppppp\peizhibao\phpstudy\tmp\tmp   session 路径
?>
<div class="container">
  <div class="row">
    <div class="col-md-12">
   <h3 class="text-center">用户登录</h3>
   <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" class="form-horizontal">
      <div class="form-group">
    <label for="name" class="col-sm-2 control-label">用户名:</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="name" placeholder="userName" name="name" value="<?php echo (isset($_POST['name']))?$_POST['name']:''?>">
    </div>
  </div>
   <div class="form-group">
    <label for="password" class="col-sm-2 control-label">密码:</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="password" placeholder="PassWord" name="password" value="<?php echo (isset($_POST['name']))?$_POST['name']:''?>">
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10 text-center">
       <button type="submit" class="btn btn-primary btn-block">注册</button>
    </div>
  </div>
   </form>
 </div>
  </div>
</div>

三;下面是admin.php文档中的代码;如果用户登录成功并且用户名以及密码都写入了session 那么久显示admin.php中的信息,否则表示用户没有登录跳转至登录页面进行登录

<?php
//导入头部
require 'header.php';
echo '<h2>欢迎来到PHP中文网管理后台</h2>';
session_start();//开启session
if(isset($_SESSION['name'])){
 echo '<p style="color:green">欢迎管理员<span style="color:red">'.$_SESSION['name'].' </span></p>';
}else{
 echo '<script>alert("请先登录");location.href="login_session.php"</script>';
}
//phpinfo();
?>

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post