iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
自我挑戰組

HTML、 PHP CRUD 自我學習系列 第 15

第15天 - PHP 簡易登入(2)_PHP的部分

  • 分享至 

  • xImage
  •  

接續昨天的部分,今天PHP的原理大致上就是

你填入的 帳號 && 密碼 是否有(同時)存在於 表staff 中 (且限制在1筆)。

另外此程式碼含有,當你登入時,順便啟動 【SESSION['auth']】 <<然後可以使用SESSION裡面的東西來~~顯示會員資料之類的(下次會用到)。

順便做了一個"登出按鈕"(用來消除 SESSION 用的),不然除非開機 SESSION 會消不掉(沒記錯的話)。

登出的程式碼(消除 SESSION 後回到登入畫面)

<?php
	if(isset($_POST['logout_btn']))
	{
		session_start();
		//清除Session
		session_destroy();
		header("Location: login2.php");
		exit(0);
	}
?>
<form method="post"> 
	<button class="badge badge-warning"
			type="submit"
			name="logout_btn">
		登出
	</button>
</form>

登入的程式碼 (新建立一個 logincode2.php ,昨天的程式碼 FORM標籤 有指向這裡面的內容)

<?php
 //判斷session是否已啟動
if(!isset($_SESSION))
{
    session_start();
} 
include 'db_cn.php';

if(isset($_POST['btn_login']))
{
	
	$id = $_POST['id'];
	$password = $_POST['password'];

    //你填入的 帳號 && 密碼 是否有(同時)存在於 表staff 中 (且限制在1筆)
	$log_query = "SELECT * FROM staff WHERE staff_id='$id' AND st_pass='$password' LIMIT 1";
	$log_query_run = mysqli_query($con,$log_query);

    //如果有存在的話,就列出來並記錄在 SESSION
	if(mysqli_num_rows($log_query_run) > 0)
	{
		foreach ($log_query_run as $row){
			$user_id = $row['staff_id'];
			$user_role = $row['staff_role'];
			$staff_name = $row['staff_name'];
		}

		$_SESSION['auth_role'] = "$user_role";
		$_SESSION['auth'] = true;
		$_SESSION['auth_user'] = [
			'user_id' => $user_id,
			'user_role' => $user_role,
			'staff_name' => $staff_name
		];
		header('Location: Hello.php');
	}
	else
	{
		$_SESSION['status'] = "帳密輸入錯誤!!";
		header('Location: login2.php');
	}
}
else
{
    //通常是連不到伺服器、資料庫之類的才會輪到這裡。
	$_SESSION['status'] = "登入失敗!!";
	header('Location: login2.php');
}

?>

今天的重點是 SESSION 的寫法,要拿來用的話大概會長以下這樣。
(可以用來顯示會員等級,這樣可以省去要寫搜尋整張 表staff 的麻煩。
不過不知是否會大幅增加伺服器的負擔,目前我還不知道,
我也是第一次寫這相關的程式碼,伺服器是其他組員負責架的,所以我不是很了解...)

<?php 
    if(isset($_SESSION['auth']))
    {
        echo $_SESSION['auth_user']['user_role'];
    }
?>

今天就先這樣,下次見。


上一篇
第14天 - PHP 簡易登入(1)_HTML的部分
下一篇
第16天 - PHP 簡易登入(3)_判斷身分
系列文
HTML、 PHP CRUD 自我學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言