創建一個名爲“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>";
?>