Link 登录页面的菜单取决于访问级别 PHP

Link menu to login page depending on access level PHP

我尝试了不同的方法,但仍然无法解决。加载的第一个页面是两个按钮 - 注册或登录。 当此人登录时,他们将被分配到状态 1(普通用户)或状态 2(管理员)。 我正在尝试根据用户的状态 link 将登录页面设置为菜单。管理员和普通用户将有不同的菜单。该代码似乎不起作用,它所做的只是回应状态。我正在使用 PHP。 要登录,用户必须输入两个字段 --> 他们的 "Username" - $un 和 "Password" - $pw。状态 = $st

这是我 process_user_login 上的代码:

<?php
session_start();
?>
<!DOCTYPE HTML>    
<html>
<head>
    <meta charset="utf-8">
    <title>
        Untitled Document
    </title>
</head>
<body>

<?php
$un = $_POST['Username'];
$pw = $_POST['Password'];
$st = $_POST['Status'];
echo $un;
echo $pw;
echo $st;

//code to populate user table goes here
mysql_connect("localhost", "****", "*****") or die(mysql_error());
mysql_select_db("database name***") or die(mysql_error());
//Find user details from User table using the username entered and comparing the entered password with the one retrieved form the user table
$result = mysql_query(  "SELECT Username, Password, Status
                         FROM User
                         WHERE Username = '$un' ");
                         echo "Successfully Logged In" 
              or die(mysql_error());
      while ($row = mysql_fetch_array($result)) {
        //Print out the contents of each row into a table
        $stored_password = $row['Password'];
        if ($stored_password == sha1($pw)){
        echo "Stored Username is ". $row['Username'];
        echo "<br />";
        echo "Stored Status is ". $row['Status'];
        echo "<br />";

}

else{ 
    echo " Incorrect password - ";
    echo "<a href= '****myurl****'> Please try again</a>";
}
}
?>

<?php
echo "<link href='user_login.css' rel='stylesheet' type='text/css'/>";
?>

如果我能得到一些帮助,我将不胜感激,如果你也能告诉我我应该把它放在哪里,那就更好了。

感谢所有提供帮助的人!

1- 首先,我认为你不应该使用 $_POST 作为他们的状态。您肯定想从数据库中获取个人的状态。否则你是允许用户选择他们自己的状态?

2- 其次使用 mysqli_ 或 pdo 作为反对弃用的 mysql_

检查protection against sql injection

有几种方法可以做到这一点。 会这样做。

3- 我会 检查 个人的数据库 所以关于行数:

   $check = $conn->query("SELECT * FROM users WHERE username = '$un'");
        $row = $check->fetch_assoc();

4- 然后我会得到对应于用户状态的字段:

$status= $row['status'];

5- 然后我会设置一个 if 语句,例如:

if($status == 1){
    $isAdmin ="link_to_admin_page";
    //$isAdminStr ="Admin Page";
}
else
    $isAdmin ="link_to_other_page";
    //$isAdminStr ="User Page";

您还可以将 link 的字符串添加到 if 语句中,这样当用户看到 link 时,它会显示管理页面或用户页面。我在上面的 if 语句

中评论了这一点

6- 然后就可以echo出变量来显示你需要的