一:cookie是什么?
cookie是保存在客户端(浏览器)上面的名值对,记录访问者的信息;
2.cookie有什么用?
记录和跟踪用户的访问记录,保持用户在多个页面之间的状态
3.cookie的常用操作有哪些?
创建,访问,删除
4.cookie的使用场景?
凡是需要在多个页面标识同一用户的地方,如登陆
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>'; } ?>