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

接续昨天的部分,今天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'];
    }
?>

今天就先这样,下次见。


<<:  Dynamic Time Warping (DTW)

>>:  [Day 02] 建立开发环境,做好行前准备

DAY 15 - 哥布林 (2)

大家好~ 我是五岁~~ 今天让我们来把哥布林完成吧~~!!! 目标是把昨天的哥布林上色卡通化~~ 第...

Day 03 - Contract

本篇重点 Contract物件介绍 VS Code虚拟环境设定补充说明 Contract Contr...

企划实现(10)

FB登入 第一步:到FB官网并创建帐号 https://developers.facebook.co...

Day09 X Resource Hint & Non-Blocking Script Tag

经过昨天的内容,读者们应该对於网页的渲染流程有大致的理解了。 我们再小小复习一下,大致上网页的渲染...

[Day4] Array Cardio Day 1

[Day4] Array Cardio Day 1 Javascript 的技巧 需要用到的技巧与练...