亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 PHP 登錄/注冊的權限

使用 PHP 登錄/注冊的權限

PHP
慕工程0101907 2022-12-11 09:17:06
我是 PHP 的新手。我只想問如何在登錄時將“管理員”和“用戶”帳戶重定向到特定頁面。當我以管理員身份登錄時,它將被定向到一個頁面,如“superuser.php”,我可以在該頁面的 GUI 中為“用戶”創建一個帳戶。當創建的“用戶”帳戶登錄后,它將被定向到具有不同權限的頁面,如“user.php”?!坝脩簟弊皂撁媾c“管理員”不同,因為它將位于管理員的主頁。那就是我現在被困的地方到目前為止,我完成了“管理”部分。我的PHP代碼:<?php     session_start();    // variable declaration    $username = "";    $errors = array();     $_SESSION['success'] = "";    // connect to database    $db = mysqli_connect('localhost','root','','registration');    if (mysqli_connect_errno($db)) {        echo "Failed to connect to MySQL:" . mysqli_connect_error();    }    // REGISTER USER    if (isset($_POST['reg_user'])) {        // receive all input values from the form        $username = mysqli_real_escape_string($db, $_POST['username']);        $password_1 = mysqli_real_escape_string($db, $_POST['password_1']);        $password_2 = mysqli_real_escape_string($db, $_POST['password_2']);        // form validation: ensure that the form is correctly filled        if (empty($username)) { array_push($errors, "Username is required"); }        if (empty($password_1)) { array_push($errors, "Password is required"); }        if ($password_1 != $password_2) {            array_push($errors, "The two passwords do not match");        }        // register user if there are no errors in the form        if (count($errors) == 0) {            $password = md5($password_1);//encrypt the password before saving in the database            $query = "INSERT INTO users (username, password)                       VALUES('$username', '$password')";            mysqli_query($db, $query);            $_SESSION['username'] = $username;            $_SESSION['success'] = "You are now logged in";            header('location: login.php');        }    }
查看完整描述

2 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

您需要保存用戶權限類型,user_type例如 user、admin、super_user 等


CREATE TABLE `users` (

`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

`username` varchar(100) NOT NULL,

`password` varchar(100) NOT NULL,

`user_type` varchar(20) NOT NULL,

index(user_type)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

當他們登錄時,您檢查他們user_type并將其存儲在會話中 $_SESSION['user_type'] = *their_user_type_from_the_db*


然后將他們重定向到正確的頁面


$_SESSION['user_type'] = *their_user_type_from_the_db*

if($_SESSION['user_type']=='user'){

    header('location: user.php');

}elseif($_SESSION['user_type']=='super_user'){

    header('location: superuser.php');

}else{

    header('location: home.php');

}


查看完整回答
反對 回復 2022-12-11
?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

這可以在數據庫上輕松處理,并允許您控制用戶類型,而無需使用檢查常規登錄會話之外的會話的特殊代碼。


如果您有一個用戶表,請在表中放置一列用于type. 在表中設置一個與他們的用戶類型相對應的值。對于普通用戶,將該值設置為 1,對于“超級用戶”或“管理員”,將其設置為 2。當他們登錄時查詢數據庫并檢查他們的用戶類型,以及是否將其設置為普通用戶的值,只允許他們訪問常規用戶數據,如果設置為管理員,則允許他們訪問管理部分。


在您獲得用戶登錄的結果后,將執行以下查詢:


$sql = "SELECT usertype FROM users WHERE username='$username'";

在將 $row 信息收集到數組中后,檢查$row['usertype'].


if($row['userType'] === 2){

    //Admin user permissions

    //Set an admin session here

    header('Location: admin.php');

    exit();

}else{

    //Regular user permissions

    //Set an reg user session here

    header('Location: loginHome.php');

    exit();

}


查看完整回答
反對 回復 2022-12-11
  • 2 回答
  • 0 關注
  • 142 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號