博客列表 >cookie的用法集锦

cookie的用法集锦

小的博客
小的博客原创
2018年01月07日 13:47:40637浏览

一:cookie是什么?

     cookie是保存在客户端(浏览器)上面的名值对,记录访问者的信息;

2.cookie有什么用?
     记录和跟踪用户的访问记录,保持用户在多个页面之间的状态
     3.cookie的常用操作有哪些?
      创建,访问,删除
     4.cookie的使用场景?
     凡是需要在多个页面标识同一用户的地方,如登陆

  1. php设置客户端的cookie: setCookie()
          setcookie(名name,值value,[过期时间expires])
          cookie名与值必填,过期时间可选,如无则关闭浏览器自动删除
          cookie通常为5k大小,数量一般不超过50个键值对

 2. 读取在客户端设置的cookie
       使用超全局变量$_COOKIE来获取cookie
       读取cookie的过程:
      1. php脚本将cookie设置到客户端
      2. php脚本将客户端的cookie读取出来
      所以,第一次刷新页面是写入cookie,只有第二次刷新才会读取cookie
      因为读取最新的cookie,客户端浏览器必须刷新二次页面

3. 删除cookie
   方法:
    1. 不给出值: setcookie('name');  删除name
    2. 给一个已经过去的时间戳: setcookie('password', time()-3600); 过时时间戳
    注意: php5.2之前赋空或null会将整个$_COOKIE清空
    setcookie('name', ''); setcookie('name',null);

二:以下的PHP文档代码主要是用户登录信息验证,如果验证成功的话(数据库的数据表里面有用户的信息);即将用户的信息写入COOKIE,那么在本地的其他页面也可以接受到cookie的值,我们将登录成功 跳转的页面设置为admin.php

<?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){//用户名和密码要同事存在
 
  try{
   //连接数据库生成pdo对象
  $pdo=new PDO('mysql:host=localhost;dbname=demo;charset=utf8','root','root'); 
  //准备好预处理的查询语句
  $sql="SELECT `name`,`password` FROM `user1` WHERE `name`=:name AND password=sha1(:password)";
  //生成pdoStamment预处理对象:用prepare()方法
  $pdoStmt=$pdo->prepare($sql);
  if(true==$pdoStmt){
   //参数绑定
   $pdoStmt->bindParam(':name',$name,PDO::PARAM_STR);
   $pdoStmt->bindParam(':password',$password,PDO::PARAM_STR);
   //执行:预处理对象的execute()方法:执行成功则放回true 失败则返回false
   $res=$pdoStmt->execute();
   if(true==$res){
    if($pdoStmt->rowCount()==1){//如果查询到一条数据,则表示用户登录成功
     //将用户名和密码写入cookie
     setcookie('name',$name);
     setcookie('password',sha1($password));
     echo '<script>alert("登录成功");location.href="admin.php"</script>';
    }else{
     echo '<script>alert("用户名或密码输入错误请从新输入")</script>';
    }
   }else{
    echo '<acript>alert("用户名或密码不存在,请注册")</script>';
   }
  }else{
   print_r($pdo->errorInfo());
  }
  }catch(PDOException $e){
   $e->getMessage();
   die();
  }
  
 }else{
  echo '<script>alert("没有输入用户名和密码")</script>';
 }
 
}
?>
<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;如果在这个页面能接收到用户名($_COOKIE['name']);则表示用户成功登录,否则表示接收不到用户名用户需要从新登录;

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

?>


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