思路:使用session保存用戶的登錄狀態,在需要登錄的頁面判斷session來判斷是否跳轉到登錄頁面
session原理不是很瞭解,就是開始一個session之後服務器會產生一個文件保存信息,並且客戶端會有一個cookie來記錄sessionID來保持和服務器的通訊
session
<?php
// 啓動 Session
session_start();
// 聲明一個名爲 admin 的變量,並賦空值。
$_SESSION["admin"] = null;
?>
每次使用session時需要先session_start();
具體案例
登錄頁面
<?php
if( isset($_POST['username']) ){
require("../Tools/SQL/sql.php");
$password = $_POST["password"];
$username = $_POST["username"];
$con = mysqli_connect("localhost",$db_user,$db_pwd,$db_database);
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
$sql="SELECT * FROM admin where user = '".$username."'";
$result=mysqli_query($con,$sql);
// 取出數據
$row=mysqli_fetch_assoc($result);
$pwd = $row["pwd"];
// 釋放結果集
mysqli_free_result($result);
mysqli_close($con);
if( $pwd == $password ){
session_start();
// 註冊登陸成功的 admin 變量,並賦值 true
$_SESSION["admin"] = true;
echo '<script language="JavaScript">;alert("登錄成功");location.href="admin.php";</script>;';
} else {
echo '<script language="JavaScript">;alert("用戶名密碼錯誤");location.href="login.php";</script>;';
}
}
?>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陸界面</title>
</head>
<body>
<form action="login.php" method="post">
帳號:<input type="text" name="username"><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="登錄">
</form>
</body>
</html>
用戶頁面
<?php
// 防止全局變量造成安全隱患
$admin = false;
// 啓動會話,這步必不可少
session_start();
// 判斷是否登陸
if (isset($_SESSION["admin"]) && $_SESSION["admin"] === true) {
echo "admin";
}else{
echo '沒登錄'.'<hr />';
echo '<script language="JavaScript">;alert("請登錄");location.href="login.php";</script>;';
}
參考:
https://www.cnblogs.com/happyforev1/articles/1645916.html