我想检查一下“设计”。存储在user_info数据库中的用户(指定)是' gm' (G.M.)与否。 目前,我有两个用户,一个用于设计'设计。作为' gm'另一个是' mgr',无论谁登录,' gm.html'页面总是加载。 正确的工作应该是,如果设计是gm,那么只有它应该重定向到gm.html页面。 (成员是user_info数据库中的表)
<?php
session_start();
if((isset($_SESSION['login']) && $_SESSION['login'] ==true)) {echo "";}
else{
header("location:login.html");}
$mysql_hostname = 'localhost';
$mysql_usrnm = 'root';
$mysql_pass = '';
$mysql_db = 'user_info';
$con = mysqli_connect($mysql_hostname, $mysql_usrnm, $mysql_pass, $mysql_db) or die('Cant connect to database');
mysqli_select_db($con,$mysql_db);
$result = mysqli_query($con, "SELECT desig FROM members WHERE desig='gm'");
if (!$result) {
printf("Error: %s\n", mysqli_error($con));
exit();
}
$desig = mysqli_fetch_array($result) or die("error");
if($desig!="gm")
{
$mysql_db1='customer';
$con1=mysqli_connect($mysql_hostname, $mysql_usrnm, $mysql_pass, $mysql_db1) or die("Connection died for your sins.");
echo "Connected";}
else
header("location:gm.html");
?>
答案 0 :(得分:0)
您的代码似乎是硬编码的,只能返回GM?
$result = mysqli_query($con, "SELECT desig FROM members WHERE desig='gm'");
我很确定这应该是基于用户选择的,而不是简单地为任何人运行“找我GM用户”。
如果我理解你的问题,那么在这个剪辑的开始和结束之间是否应该使用登录信息来验证用户的级别?
if((isset($_SESSION['login']) && $_SESSION['login'] ==true))
{
echo "";
// Shouldn't you run a query here to see who your user is?
// For example to get their ID?
}
else
{
header("location:login.html");
}
$mysql_hostname = 'localhost';
$mysql_usrnm = 'root';
$mysql_pass = '';
$mysql_db = 'user_info';
$con = mysqli_connect($mysql_hostname, $mysql_usrnm, $mysql_pass, $mysql_db) or die('Cant connect to database');
mysqli_select_db($con,$mysql_db);
$result = mysqli_query($con, "SELECT desig FROM members WHERE desig='gm'");
// Then here, instead of running this, convert it to something similar to:
$result = mysqli_query($con, "SELECT desig FROM members WHERE userid=$id");
编辑:
存储变量很简单 - 但你必须从某个地方获取它。
您可以通过弹出users表中的列来执行此操作 - 您可以在其中验证用户名和密码。我建议您查看这样的基本表来存储用户信息。 (我还建议您存储密码等的哈希值,但这似乎是另一次的对话)。
user table:
userID username password userLevel
1 someUser somePass Grunt
2 someUser1 somePass1 MGR
3 someUser2 somePass2 MGR
4 someUser3 somePass3 GM
有了这个,您可以启动对数据库的快速查询,验证用户名和密码,并轻松获取其userLevel。
获得级别后,如果您愿意,可以将其存储在会话变量中,并根据存储的内容使代码应用逻辑。
答案 1 :(得分:0)
我解决了这个问题。我的代码中存在一些逻辑错误。
if((isset($_SESSION['login']) && $_SESSION['login'] ==true)) {
//Selecting the whole row to compare and display different variables
$sql = "SELECT * FROM members WHERE username = '".$_SESSION['username']."'";
if(!$sql)
echo mysql_error();
$result = mysqli_query($con,$sql);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
//Using $row variable to fetch and compare the value stored in 'desig' with 'gm'
if($row["desig"]=='gm')
header("location:gm.php"); //Opens up different page for gm aka Gen. Mgr.
}
else
header("location:login.html"); //Redirects to this page if no user is logged in.