如何使“登录”页面标识用户类型?

时间:2014-11-03 05:52:35

标签: php html mysql

我使用的是html,PHP和MySQL(phpmyadmin)。这可能是一个非常简单的问题,但我是初学者,所以这对我来说很新。我的系统有4种类型的用户。 假设用户类型1具有用户名Tom,用户类型2具有用户名Alice,用户类型3具有用户名Mike,用户类型4具有用户名Mary。 我希望登录页面能够识别用户名写入时的用户类型。例如,如果是Tom,我希望系统识别出他是用户类型1并将他重定向到特定页面。同样,如果是Alice,则应识别她的用户类型,并将她重定向到另一个页面。与用户类型1不同的页面。 请让我知道最简单的方法。非常感谢你。

这是我到目前为止所做的。但它没有用。请让我知道我必须做什么。

if (isset($_POST['username'])) {
$username = $_POST ['username'];
$password = $_POST ['password'];
$usertype = $_POST ['user_type'];
$sql = "SELECT * FROM users WHERE username = '".$username."' AND password = '".$password."' LIMIT 1";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1) {
    if ($username ['user_type'] == admin) {
        header('location: localhost/adminhomepage.php');
    }
    else if ($username ['user_type'] == po) {
        header('location: localhost/pohomepage.php');
    }
    else if ($username ['user_type'] == pw) {
        header('location: localhost/pwhomepage.php');
    }
    else if ($username ['user_type'] == ps) {
        header('location: localhost/pshomepage.php');
    }
    else{
        echo "error determining user type!";
        exit();
    }
}
else {
    echo "Invalid login information. Please try again.";
    exit();
}

}

5 个答案:

答案 0 :(得分:2)

试试这个,在mysql中创建一个像role一样的单独列。基于usertype在该列中放置值,如果usertype 1 = role是1,usertype 2 = role是两个......

根据列名角色中的值进行特定登录时,将用户重定向到各自的页面。

由于

答案 1 :(得分:0)

编辑:这是基于您上次的代码添加编辑

// Needs to be at the top of every page
// This is used to recall your user status
session_start();

if (isset($_POST['username'])) {
    // You need to sanitize this or you have a potential security issue
    $username = mysql_real_escape_string($_POST ['username']);

    // You should not be storing in plain text. You should have this encrypted
    // You should store it with PHP's latest encryption functions or at least do
    // a salt + hash.....but at least do a hash
    // hash("sha512", $_POST['password']);
    $password = mysql_real_escape_string($_POST['password']);

    // I am not sure of the relevance of this field
    $usertype = $_POST['user_type'];

    $sql = "SELECT * FROM users WHERE username = '".$username."' AND password = '".$password."' LIMIT 1";

    // You should be using mysqli_ or PDO with prepared statements
    $query = mysql_query($sql);

// You need to fetch the results. All you have done is check if user exists
 if (mysql_num_rows($query) == 1) {
    // Fetch results
    $user = mysql_fetch_assoc($query);

    // You should set results to a session for later checking
    $_SESSION['user_type'] = $user['user_type'];
    $_SESSION['username'] = $user['username'];

    // You have to quote the checks or they are invalid
    if ($_SESSION['user_type'] == 'admin') {
        header('location: localhost/adminhomepage.php');
    }
    else if ($_SESSION['user_type'] == 'po') {
        header('location: localhost/pohomepage.php');
    }
    else if ($_SESSION['user_type'] == 'pw') {
        header('location: localhost/pwhomepage.php');
    }
    else if ($_SESSION['user_type'] == 'ps') {
        header('location: localhost/pshomepage.php');
    }
    else{
        echo "error determining user type!";
        exit();
    }
}
else {
    echo "Invalid login information. Please try again.";
    exit();
}

}

答案 2 :(得分:0)

在数据库中为用户类型添加新列。通常使用默认值创建列是有意义的,除非它们始终是唯一的。

/*/your SQL query/*/

//if you need to validate type throughout the site, setup sessions as @Rasclatt suggested//

if ($user['type'] == 1) {
    header('location: http://domain.com/page1.html');
}else if ($user['type'] == 2) {
    header('location: http://domain.com/page2.html');
}else if ($user['type'] == 3) {
    header('location: http://domain.com/page3.html');
}else if ($user['type'] == 4) {
    header('location: http://domain.com/page4.html');
}else{
    echo "error determining user type!";
    exit;
}

答案 3 :(得分:0)

在用户表中添加名为user_type的列。 用户注册时添加用户类型。 之后登录时,您可以通过查询检查登录的用户类型。

如果要在下一页显示用户类型,可以在会话中存储user_type。

随时可以提出任何进一步的问题。

我希望这可以帮到你。

答案 4 :(得分:0)

首先,您需要MySQL技能才能获得所需内容,因为用户类型/角色取决于不同的MySQL表格。 例如... 在几乎每个网站中,您都注意到有一个管理员,用户,还有一些人有一个或多个子管理员。所有人都有不同的权利,当他们尝试登录时,每个人都会重定向到他们指定的页面,比如用户将被重定向到主页,管理员将重定向到管理面板索引等。

现在你需要为MySQL中的每个用户创建不同的表并为它们分配不同的权限,或者你也可以根据布尔值创建不同的列,例如0表示某些操作,1表示某些操作...  希望它会帮助你...