博客列表 >详解session

详解session

小的博客
小的博客原创
2018年01月07日 14:03:15851浏览

一;什么是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();
?>

上一条:看雪下一条:cookie的用法集锦
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议