Есть таблица users со столбцами id_user, login_user, password_user, mail_user и role.
role - int(3). Предусмотрено 3 вида роли: 1 - обычный пользователь, 2 - модератор, 3 - администратор. По умолчанию, при регистрации, пользователь автоматически получает role - 1.
Нужно сделать так, чтобы при авторизации пользователи с разными ролями попадал на разные страницы профиля. Например: админ - admin.php, user - user.php и т.д.
Собственно, проблема в том, что при авторизации role игнорируется. Т.е. авторизовался пользователь с role 1, а ему страницу role 3 выдает. Если просматривать сам код страницы, видно, что пользователь как бы и на admin.php, и на user.php.
Перерыл половину Интернета, ничего не нашел. Либо я слепой, либо не хватает логики. В любом случае, буду благодарен за помощь.
auth.php:
function check() {
if (isset($_SESSION['id_user']) and isset($_SESSION['login_user'])) return true;
else {
if (isset($_COOKIE['id_user']) and isset($_COOKIE['code_user'])) {
$db = new mysql();
$id_user=$db->screening($_COOKIE['id_user']);
$code_user=$db->screening($_COOKIE['code_user']);
if ($db->query("SELECT * FROM `session` WHERE `id_user`=".$id_user.";", 'num_row', '')==1) {
$data = $db->query("SELECT * FROM `session` WHERE `id_user`=".$id_user.";", 'accos', '');
if ($data['code_sess']==$code_user and $data['user_agent_sess']==$_SERVER['HTTP_USER_AGENT']) {
$_SESSION['id_user']=$id_user;
$_SESSION['login_user']=$db->query("SELECT login_user FROM `users` WHERE `id_user` = '".$id_user."';", 'result', 0);
setcookie("id_user", $_SESSION['id_user'], time()+3600*24*14);
setcookie("code_user", $code_user, time()+3600*24*14);
return true;
} else return false;
} else return false;
} else return false;
}
}
function authorization() {
$db = new mysql();
$login = $db->screening($_POST['login']);
$passwd = md5($db->screening($_POST['passwd']).'lol');
if ($db->query("SELECT * FROM `users` WHERE `login_user` = '".$login."' AND `passwd_user` = '".$passwd."';", 'num_row', '')==1) {
$_SESSION['id_user']=$db->query("SELECT * FROM `users` WHERE `login_user` = '".$login."' AND `passwd_user` = '".$passwd."';", 'result', 0);
$_SESSION['login_user']=$login;
$r_code = $this->generateCode(15);
if ($db->query("SELECT * FROM `session` WHERE `id_user`=".$_SESSION['id_user'].";", 'num_row', '')==1) {
$db->query("UPDATE `session` SET `code_sess` = '".$r_code."', `user_agent_sess` = '".$_SERVER['HTTP_USER_AGENT']."' WHERE `id_user` = ".$_SESSION['id_user'].";", '', '');
header("Location: index.php"); } else {
$db->query("INSERT INTO `session` (`id_user`, `code_sess`, `user_agent_sess`) VALUES ('".$_SESSION['id_user']."', '".$r_code."', '".$_SERVER['HTTP_USER_AGENT']."');", '', '');
setcookie("id_user", $_SESSION['id_user'], time()+3600*24*14);
setcookie("code_user", $r_code, time()+3600*24*14);
}
Код index.php:
<?php
$r='';
$auth = new auth();
if (isset($_POST['send'])) {
if (!$auth->authorization()) {
$error = $_SESSION['error'];
unset ($_SESSION['error']);
}
}
if (isset($_GET['exit'])) $auth->exit_user();
$id_user = $_SESSION["id_user"];
if ($auth->check())
if ($role=["3"]) {
$r.="
(' <li><a href='admin.php'> ".$_SESSION['login_user']."
</a></li><li><a href='?exit'>Выйти</a></li>')";}
if($role=["2"])
{ $r.="
(' <li><a href='moder.php'> ".$_SESSION['login_user']."
</a></li><li><a href='?exit'>Выйти</a></li>')"; }
if($role=["1"])
{ $r.="
(' <li><a href='user.php'> ".$_SESSION['login_user']."
</a></li><li><a href='?exit'>Выйти</a></li>')"; }
else {
$r.='
<li><a href="signin.php">Войти/Зарегистрироваться</a></li>
';
}
print $r;
?>