Blogger Information
Blog 35
fans 0
comment 0
visits 27395
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
cookie的用法集锦
小的博客
Original
657 people have browsed it

一: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>';
}

?>


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