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出变量来显示你需要的
我尝试了不同的方法,但仍然无法解决。加载的第一个页面是两个按钮 - 注册或登录。 当此人登录时,他们将被分配到状态 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出变量来显示你需要的