创建一个名为“bb”的数据库,并创建一张“users”表,具体的数据库语句和数据如下:
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
`password` varchar(32) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
INSERT INTO `users` VALUES ('1', 'admin', '21232f297a57a5a743894a0e4a801fc3');
数据库创建好添加数据后我们在建一个login.php文件,里面的代码如下:
<?php
// 使用PDO连接数据库
$pdo = new PDO("mysql:host=localhost;dbname=bb","root","root");
// 判断do存在就执行里面的程序
if(isset($_POST['do'])){
$user = $_POST['user'];
$pass = md5($_POST['pass']);//..密码使用md5加密
// 准备SQL语句
$stmt = $pdo->prepare("select id,username from users where username=? and password=?");
// 执行SQL语句
$stmt->execute(array($user,$pass));
// 判断查到数据影响行数大于0就执行里面的程序(如果影响行数大于0,说明这个用户时存在的,就让登录)否则不让登录
if($stmt->rowCount()){
$result = $stmt->fetch(PDO::FETCH_NUM);//`fetch从结果集中获取下一行,返回一个索引以0开始的结果集列号的数组
list($id,$username) = $result;// list()函数用于在一次操作中给一组变量赋值
$time = time() + 24 * 60 *60;
setCookie("uid",$id,$time,"/");//..设置COOKIE
setCookie("username",$username,$time,"/");//..设置一个用户名COOKIE
setCookie("isLogin",1,$time,"/");//..设置一个登录判断的标记isLogin
// echo '<script>location="index.php"</script>';//..登录成功跳转到主页
}else{
echo "<script>alert('登录失败请重新登录)</script>";
}
}
// 处理退出登录的功能
if(isset($_GET['do']) && $_GET['do'] == 'logout'){
setCookie("uid",'',time() - 3600,"/");
setCookie("username",'',time() - 3600,"/");
setCookie("isLogin",'',time()-3600,"/");
echo '<script>alert("退出成功");location="login.php"</script>';
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<form action="login.php" method="post">
<table width="400" cellpadding="10" cellspacing="0" border="1">
<tr>
<td>账号:</td>
<td><input type="text" name="user"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" name="pass"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="登录" name="do"></td>
</tr>
</table>
</form>
</body>
</html>
再创建一个index.php文件,里面的代码如下:
<?php
// 判断是否是登录的,如果登录的,我们才可以通过 假如有这个变量$_COOKIE['isLogin'] = 1就是登录了
if(!(isset($_COOKIE['isLogin']) && $_COOKIE['isLogin'] == 1)){
echo '<script>
alert("你还没有登录,请登录!");
location = "login.php"
</script>';
}
echo "你好{$_COOKIE['username']} | <a href='login.php?do=logout'>退出登录</a>";
?>