cookie学习
想要完成用户登入一次之后,下次再登入时候不用输入密码,直接进入页面。
学习这个之前要知道如何设置cookie文件,在哪查看cookie文件
使用IE查看cookie文件:
首先我们要写两个文件和session一样他有设置和获取
<?php
setcookie("name","Alice",time()+3600);
?>
打印cookie文件
<?php
var_dump($_COOKIE);
?>
在浏览器中找到两个文件testcookie.php是空白内容,getcookie.php是cookie文件
工具—Internet选项—设置—查看文件—搜索框输入cookie筛选信息——
右键打开文件:Cookies are no longer stored in files. Please use InternetCookie APIs to access cookies.
我们把在ie下的操作在Chrome中找到cookie
自定义及控制—设置—搜索cookie—内容设置—Cookie—输入localhost
记住密码/自动登录
name=rm
在doAdminLogin.php中判断是否选择rm这个按钮
// 登入成功并选中rememberme的复选框
if (isset($_POST["rm"])) {
// $c=$_POST["rm"];
//echo $c;
// exit;
设置cookie生效的时间
setcookie("flag","ok",time()+300);//300s后失效
setcookie("admin", $_SESSION["admin"],time()+300);//300s后失效
setcookie("adminid", $_SESSION["adminid"],time()+300);//300s后失效
在index.php需要找到cookie(设置flag标志)
<?php
if (isset($_COOKIE["flag"])){
session_start();
$_SESSION["admin"]=$_COOKIE["admin"];//存入用户名session
$_SESSION["adminid"]=$_COOKIE["adminid"];//后面是数据库中的名字
header("location:welcome.php");
}
?>
完整代码
index.php
<?php
if (isset($_COOKIE["flag"])){
session_start();
$_SESSION["admin"]=$_COOKIE["admin"];//存入用户名session
$_SESSION["adminid"]=$_COOKIE["adminid"];//后面是数据库中的名字
header("location:welcome.php");
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>管理员登录</title>
<!-- Bootstrap core CSS -->
<link href="assets/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="assets/signin/signin.css" rel="stylesheet">
<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="assets/signin/ie-emulation-modes-warning.js"></script>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="http://cdn.bootcss.com/html5shiv/3.7.0/html5shiv.js"></script>
<script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<form class="form-signin" method="post" action="doAdminLogin.php" role="form">
<h2 class="form-signin-heading">欢迎管理员登录</h2>
<input type="text" name="adminname" class="form-control" placeholder="Administrator name" required autofocus>
<input type="password" name="password" class="form-control" placeholder="Password" required>
<div class="checkbox">
<!-- 某次成功登录时选择Remember me-->
<!-- 下次再登入就不需要显示登录页,直接进入后台()当前电脑记录某些关于这个网站的信息——cookie类似记事本文本文件-->
<!-- cookie服务器在客户端保存的一个文本文件,记录信息-->
<!-- setcookie("名",值",保存时间单位秒)-->
<!-- time()返回当前离1970-1-1的秒数-->
<!-- setcookie("name","Mike",time()+3600)-->
<label>
<input type="checkbox" value="remember-me" name="rm"> Remember me
</label>
</div>
<input class="btn btn-lg btn-primary btn-block" type="submit" value="登录">
</form>
<?php
if (isset($_GET["err"])){
echo "<h2 style='color: brown;margin: 0 40%'>{$_GET["err"]}</h2>";}
?>
</div> <!-- /container -->
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="assets/signin/ie10-viewport-bug-workaround.js"></script>
</body>
</html>
doAdminLogin.php
<?php
session_start();
$a=$_POST["adminname"];//admin
$b=$_POST["password"];//psw
$sql="select * from admins WHERE adminname='$a' AND password=md5('$b')";
//在admins表中添加数据在数据库中
require ("inc_admin.php");
$con = connect();
$rs=mysqli_query($con,$sql);
if (mysqli_num_rows($rs)){
$row=mysqli_fetch_array($rs);
$_SESSION["admin"]=$a;//存入用户名session
$_SESSION["adminid"]=$row["adminid"];//后面是数据库中的名字
// 登入成功并选中rememberme的复选框
if (isset($_POST["rm"])) {
// $c=$_POST["rm"];
//echo $c;
// exit;
setcookie("flag","ok",time()+300);//300s后失效
setcookie("admin", $_SESSION["admin"],time()+300);//300s后失效
setcookie("adminid", $_SESSION["adminid"],time()+300);//300s后失效
}
header("location:welcome.php");
}else{
header("location:index.php?err=用户名密码错误!");//查看index是登入页,传的参数是输入错误信息才出现
}
?>
在doVideoAdd.php文件中增加
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
$videoname =htmlspecialchars($_POST["videoname"]);
$address =htmlspecialchars($_POST["address"]);
$videotype =$_POST["videotype"];
$videointro =htmlspecialchars($_POST["videointro"]);
以管理员身份进入之后现在关闭浏览器再次http://localhost/neuvideo456/admin/
仍然进入