首頁  >  問答  >  主體

如何在 PHP 登入功能中新增使用者存取級別

<p>我開發了一個 PHP 登入/註冊腳本,當使用者登入時,它會啟動一個會話並建立一個 cookie,然後使用以下命令將使用者重定向到儀表板.php:</p> <pre class="brush:php;toolbar:false;">//get data in variables $emailAddress = mysqli_real_escape_string($conn,$_POST['emailAddress']); $password = mysqli_real_escape_string($conn,$_POST['password']); $remember = isset($_POST['rememberMe']); if(!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) { $error = 'Please enter a valid email address.'; } elseif(email_exists($emailAddress,$conn)) { // if email address exists $result = mysqli_query($conn,"SELECT password FROM users WHERE email = '$emailAddress'"); $retrievePassword = mysqli_fetch_assoc($result); if(!password_verify($password,$retrievePassword['password'])) // if password does not match { $error = 'Password is incorrect.'; } else { // if password correct, log user in $_SESSION['email'] = $emailAddress; if($remember == 'on') { // if "keep user logged in" was ticked setcookie("email",$emailAddress,time() 7200); // keep user logged in for 2 hours } header("location: dashboard.php"); } } else { // if email does not exist $error = 'Email address not registered.'; }</pre> <p>在我所有受限頁面(例如dashboard.php)的頂部,我有:</p> <pre class="brush:php;toolbar:false;">if(logged_in()) { // if user logged in, show page</pre> <p>logged_in() 函數是:</p> <pre class="brush:php;toolbar:false;">function logged_in(){ if(isset($_SESSION['email']) || isset($_COOKIE['email'])) { return true; } else { return false; } }</pre> <p>在資料庫中,我有一個標題為 <code>usrUserTypeNo</code> 的列,其中管理員為“1”,一般使用者為“3”。 如何將此使用者類型合併到會話中,以便我可以根據使用者的角色確定向使用者顯示哪些內容? </p>
P粉680000555P粉680000555382 天前394

全部回覆(1)我來回復

  • P粉041856955

    P粉0418569552023-09-06 00:31:46

    不完全是。

    如果您想要執行三種不同的操作之一(未登入操作、正常使用者操作、管理員使用者操作),那麼您必須測試這些狀態並為每種狀態編寫邏輯。

    您可以將存取等級儲存在會話中,而不是每次都從資料庫要求它。

    回覆
    0
  • 取消回覆