Роль пользователя (например, Admin, User), переходящая в таблицу вместо имени пользователя - PullRequest
2 голосов
/ 26 января 2012

У меня есть страница комментариев, и там, где у меня есть роли пользователей (Глобальный администратор (3), Администратор (2), Пользователь (1)), все они могут оставлять комментарии на странице.

Моя проблема в том, что роль пользователя (1,2 или 3) заносится в таблицу вместо имени пользователя. Есть идеи, как это исправить? Вот код вставки.

<?
include 'dbconnect.php';
$userName = $_SESSION['user'];
$comment = $_REQUEST["comments"];
$game_ID = $_SESSION['id'];
$query = "INSERT INTO comments (userName, comment, page_ID) VALUES ('$userName',     '$comment', '$game_ID')";
mysql_query ($query);
echo "Thanks, your comment has been added!";
include 'close.php';
?>

Код входа:

$errorMessage = '';
if (!empty($_POST['txtuserName']) && !empty($_POST['txtpassword'])) {
include 'dbconnect.php';


$user   = $_POST['txtuserName'];
$password = $_POST['txtpassword'];

// check if the user id and password combination exist in database
$query = "SELECT userName, password, role FROM member WHERE userName = '$user' AND password = '$password'";

$output = mysql_query($query) or die('Query failed. ' . mysql_error()); 
$row = mysql_fetch_array($output);

if (mysql_num_rows($output) == 1 AND $row['role']==1) {
    // the user id and password match, 
    // set the session
    $_SESSION['user'] = true;
    // after login we move to the main page
    header('Location: games.php');
    exit;
}
elseif (mysql_num_rows($output) == 1 AND $row['role']==2) {
    // the user id and password match, 
    // set the session
    $_SESSION['admin'] = true;
    $_SESSION['user'] = true;
    // after login we move to the main page
    header('Location: games.php');
    exit;
}
elseif (mysql_num_rows($output) == 1 AND $row['role']==3) {
    // the user id and password match, 
    // set the session
    $_SESSION['admin'] = true;
    $_SESSION['user'] = true;
    $_SESSION['global'] = true;
    // after login we move to the main page
    header('Location: listUsers.php');
    exit;
}
else {
    $error = 'The supplied username and/or password was incorrect. Please try again.';
}

include 'close.php';
}
?>

Ответы [ 2 ]

1 голос
/ 26 января 2012

Просто поместите userName в сеанс:

$_SESSION['userName'] = $row['userName'];

Затем он будет доступен в остальной части вашего приложения.

Также имейте в виду, что вы можете поместить массивы всессия.Таким образом, вы сможете изменить свой код следующим образом:

$_SESSION['user'] = array('userName'=>$row['userName'], 'role'=>$row['role']);

И позже в своем коде:

if ($_SESSION['user']['role'] == 2) {
    // allow admin stuff
}
1 голос
/ 26 января 2012

Вы устанавливаете $_SESSION['user'] = true;, но затем пытаетесь получить к нему доступ с помощью $userName = $_SESSION['user']; ... Вместо этого ваш код входа должен сказать

$_SESSION['user'] = $row['userName'];

Ваш код вставляет значение $_SESSION['user'] в базу данных для userName, но, к сожалению, он просто устанавливает значение true при входе в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...