无法在php中获取和比较mysql数据

时间:2014-06-01 06:15:13

标签: php mysqli

我想检查一下“设计”。存储在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");

?>

2 个答案:

答案 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.