一: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>';
}
?>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号