Niveles de acceso de login en php y mysql

Estoy haciedo un sistema de login con Dreanweaver en Php y Mysql y no encuentro forma de definir que los usuarios de acuerdo a diferente niveles de acceso puedan acceder a zonas o páginas diferentes a través del mismo formulario de login?
La idea es tener un poder tener un solo formulario de login para todos los usarios pero si el nivel de acceso es "usuario" debería mostrar una interface X y si el nivel de acceso es "adminisrador" mostrar un uinterface Y.
En la base mysql tengo los campos username, pw, nivel_acceso
Desde ya gracias por tu colaboración!
Código del archivo que toma los campos del formulario de login:
<?php require_once('Connections/connBase.php'); ?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['txtNombre'])) {
$loginUsername=$_POST['txtNombre'];
$password=$_POST['txtPass'];
$MM_fldUserAuthorization = "nivel_acceso";
// Si está todo ok me envia a privada.php, pero necesito que de acuero al nivel de acceso del usuario acceda a dierentes interfaces
// ¿Podría ser tanto que la misma página privada.php muestre una interface u otra de acuerdo al nivel de acceso?
$MM_redirectLoginSuccess = "privada.php";
$MM_redirectLoginFailed = "error.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_connAnunciantes, $connAnunciantes);
$LoginRS__query=sprintf("SELECT username, pw, nivel_acceso FROM user WHERE username='%s' AND pw='%s'",
get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
$LoginRS = mysql_query($LoginRS__query, $connAnunciantes) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = mysql_result($LoginRS,0,'nivel_acceso');
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>
Y este sería el archivo que llamo por include para proteger y determinar el nivel de acceso de las páginas (funciona todo bien si el campo nivel_acceso es "usuario"; el tema es que tengo al menos tres niveles de usuario difrentes:usuario, socio, administrador.
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "usuario";
$MM_donotCheckaccess = "false";
// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
if (!empty($UserName)) {
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "../index.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)
$MM_referrer .= "?" . $QUERY_STRING;
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . Urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}

1 Respuesta

Respuesta
1
Por motivos de tiempo no pude mirar bien tu codigo pero normalmente como yo lo haria es:
Valido el tipo de usuario y depende de esto lo redirecciono a un archivo que cargaria el menu o el entorno del mismo
Salu2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas