Buenas a tod@s, quiero hacer un login de usuarios con diferentes accesos a páginas, es decir si el usuario1 tiene en el campo nivel de la BD un 1 me lleve a volu.php si tiene un 2 a volu5.php.... Tengo lo siguiente:
login.php:
<?php/* * Valida un usuario y contraseña o presenta el formulario para hacer login */if ($_SERVER['REQUEST_METHOD']=='POST') { // ¿Nos mandan datos por el formulario? include('php_lib/config.ini.php'); //incluimos configuración include('php_lib/login.lib.php'); //incluimos las funciones //verificamos el usuario y contraseña mandados if (login($_POST['usuario'],$_POST['password'])) { //acciones a realizar cuando un usuario se identifica //EJ: almacenar en memoria sus datos, registrar un acceso a una tabla de datos //saltamos al inicio del área restringida //header('Location: pagina-acceso-restringido.php'); //Sentencia SQL para buscar un usuario con esos datos $ssql = "SELECT * FROM usuarios WHERE nivel='$nivel'"; //Ejecuto la sentencia $rs = mysql_query($ssql,$link); if (mysql_num_rows($rs)!=0){ switch($rs) { case "1": header('Location: volu.php'); break; case "2": header('Location: volu5.php'); break; case "3": header('Location: volu15.php'); break; default: echo "Aun no has puesto el nivel"; } } die(); } else { //acciones a realizar en un intento fallido //Ej: mostrar captcha para evitar ataques fuerza bruta, bloqueas durante un rato esta ip, .... //preparamos un mensaje de error y continuamos para mostrar el formulario $mensaje='Usuario o contraseña incorrectos.'; }} //fin if post?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>DirecPedidos</title>
</head>
<body>
<h1>DirecPedidos</h1>
<?php //si hay algún mensaje de error lo mostramos escapando los carácteres html if (!empty($mensaje)) echo('<h2>'.htmlspecialchars($mensaje).'</h2>'); ?>
<form action="login.php" enctype="multipart/form-data" method="post">
<label>Usuario:
<input name="usuario" type="text" />
</label>
<label>Contraseña:
<input name="password" type="password" />
</label>
<input type="submit" value="Entrar" name="submit" />
</form>
</body>
</html>
********************************************************************
config.ini.php:
<?php/* * Configuración general: conexión a la base de datos y otro parámetros */define('SERVIDOR_MYSQL','127.0.0.1'); //servidor de la base de datosdefine('USUARIO_MYSQL','user'); //usuario de la base de datosdefine('PASSWORD_MYSQL','psss'); //la clave para conectardefine('BASE_DATOS','bd'); // indica el nombre de la base de datos que contiene la tabla de los usuariosdefine('TABLA_DATOS_LOGIN','usuarios'); //nombre de la tabla usariosdefine('CAMPO_USUARIO_LOGIN','usuario'); //campo que contiene los datos de los usuarios (se puede usar el email)define('CAMPO_CLAVE_LOGIN','password'); //campo que contiene la contraseñadefine('METODO_ENCRIPTACION_CLAVE','texto'); //método utilizado para almacenar la contraseña encriptada. Opciones: sha1, md5, o texto?>
********************************************************************
login.lib.php:
<?php * valida un usuario y contraseña * @param string $usuario * @param string $password * @return bool */function login($usuario,$password) { //usuario y password tienen datos? if (empty($usuario)) return false; if (empty ($password)) return false; //1 - conectamos a la base de datos utilizando los parámetros globales $link = mysql_connect(SERVIDOR_MYSQL, USUARIO_MYSQL, PASSWORD_MYSQL); if (!$link) { trigger_error('Error al conectar al servidor mysql: ' . mysql_error(),E_USER_ERROR); } // Seleccionar la base de datos activa $db_selected = mysql_select_db(BASE_DATOS, $link); if (!$db_selected) { trigger_error ('Error al conectar a la base de datos: ' . mysql_error(),E_USER_ERROR); } //2 - preparamos la consulta SQL a ejecutar utilizando sólo el usuario y evitando ataques de inyección SQL. $query='SELECT '.CAMPO_USUARIO_LOGIN.', '.CAMPO_CLAVE_LOGIN.' FROM '.TABLA_DATOS_LOGIN.' WHERE '.CAMPO_USUARIO_LOGIN.'="'. mysql_real_escape_string($usuario).'" LIMIT 1 '; //la tabla y el campo se definen en los parametros globales $result = mysql_query($query); if (!$result) { trigger_error('Error al ejecutar la consulta SQL: ' . mysql_error(),E_USER_ERROR); } //3 - extraemos el registro de este usuario $row = mysql_fetch_assoc($result); if ($row) { //4 - Generamos el hash de la contraseña encriptada para comparar o lo dejamos como texto plano switch (METODO_ENCRIPTACION_CLAVE) { case 'sha1'|'SHA1': $hash=sha1($password); break; case 'md5'|'MD5': $hash=md5($password); break; case 'texto'|'TEXTO': $hash=$password; break; default: trigger_error('El valor de la constante METODO_ENCRIPTACION_CLAVE no es válido. Utiliza MD5 o SHA1 o TEXTO',E_USER_ERROR); } // var_dump($row); // var_dump($hash); //5 - comprobamos la contraseña if ($hash==$row[CAMPO_CLAVE_LOGIN]) { @session_start(); $_SESSION['USUARIO']=array('user'=>$row[CAMPO_USUARIO_LOGIN]); //almacenamos en memoria el usuario // en este punto puede ser interesante guardar más datos en memoria para su posterior uso, como por ejemplo un array asociativo con el id, nombre, email, preferencias, .... return true; //usuario y contraseña validadas } else { @session_start(); unset($_SESSION['USUARIO']); //destruimos la session activa al fallar el login por si existia return false; //no coincide la contraseña } } else { //El usuario no existe return false; }}/** * Veridica si el usuario está logeado * @return bool */function estoy_logeado () { @session_start(); //inicia sesion (la @ evita los mensajes de error si la session ya está iniciada) if (!isset($_SESSION['USUARIO'])) return false; //no existe la variable $_SESSION['USUARIO']. No logeado. if (!is_array($_SESSION['USUARIO'])) return false; //la variable no es un array $_SESSION['USUARIO']. No logeado. if (empty($_SESSION['USUARIO']['user'])) return false; //no tiene almacenado el usuario en $_SESSION['USUARIO']. No logeado. //cumple las condiciones anteriores, entonces es un usuario validado return true;}/** * Vacia la sesion con los datos del usuario validado */function logout() { @session_start(); //inicia sesion (la @ evita los mensajes de error si la session ya está iniciada) unset($_SESSION['USUARIO']); //eliminamos la variable con los datos de usuario; session_write_close(); //nos asegurmos que se guarda y cierra la sesion return true;} ?>
Bueno la cosa es que si lo pongo así no me lleva a ningún sitio, sé que debe ser sencillísimo pero no tengo narices de resolver la cosa, no me lleva a ninguna de las páginas que quiero que me lleve. ¿alguien sabe cómo puedo hacerlo?