Código:
<?php 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 //Conectamos con la base de datos $conexion = mysql_connect(SERVIDOR_MYSQL, USUARIO_MYSQL, PASSWORD_MYSQL); //si falla if (!$conexion) { 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, $conexion); if (!$db_selected) { trigger_error ('Error al conectar a la base de datos: ' . mysql_error(),E_USER_ERROR); } $usr = $_POST['usuario']; //Sentencia SQL para buscar un usuario con esos datos $registros=mysql_query("select usuario, nivel from usuarios where usuario = '".$usr."'",$conexion) or die("Problemas en el select:".mysql_error()); if ($reg=mysql_fetch_array($registros)) { switch($reg['nivel']) { case 1: header('Location: /registro/volu/volu.php'); break; case 2: header('Location: /registro/volu/volu5.php'); break; case 3: header('Location: /registro/volu/volu10.php'); break; case 4: header('Location: /registro/volu/volu15.php'); break; case 5: header('Location: /registro/aum/aum.php'); break; case 6: header('Location: /registro/aum/aum5.php'); break; case 7: header('Location: /registro/aum/aum10.php'); break; case 8: header('Location: /registro/aum/aum15.php'); break; default: echo "Algo está fallando. Si los problemas persisten contacta con nosotros desde el enlace ¿problemas?"; } } 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 ?> <?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="index.php" enctype="multipart/form-data" method="post"> <label>Usuario: <input name="usuario" type="text" /> </label> </br></br> <label>Contraseña: <input name="password" type="password" /> </label> </br></br><input type="submit" value="Entrar" name="submit" style="float:left; left:40%; position:absolute" /> </form> <div style="position:absolute; float:left; left:35%; top:200px; width:200px;"> <!-- The activator --> <a class="activator" id="activator">¿Problemas?</a> </div> </div>
Ahora el config.ini.php:
Código:
Y el login.lib.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 datos define('USUARIO_MYSQL','user'); //usuario de la base de datos define('PASSWORD_MYSQL','pass'); //la clave para conectar define('BASE_DATOS','bd'); // indica el nombre de la base de datos que contiene la tabla de los usuarios define('TABLA_DATOS_LOGIN','usuarios'); //nombre de la tabla usuarios define('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ña define('METODO_ENCRIPTACION_CLAVE','texto'); //método utilizado para almacenar la contraseña encriptada. Opciones: sha1, md5, o texto ?>
Código:
Bien ahora si entra el primer usuario se me va a un formulario en concreto, supongamos este:<?php 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(mysql_num_rows($result) == 1) { $_SESSION['usuario'] = $usuario;} if ($row) { 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); } if ($hash==$row[CAMPO_CLAVE_LOGIN]) { @session_start(); $_SESSION['USUARIO']=array('user'=>$row[CAMPO_USUARIO_LOGIN]); return true; //usuario y contraseña validadas if(mysql_num_rows($result) == 1) { // Obtuvimos un solo resultado. // Primero, guardamos la informacion del usuario en variables de sesion // (es util mas adelante para saber si alguien esta logueado, por ejemplo) $_SESSION['usuario'] = $usuario;} } 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; } ?>
volu.php
Código:
bien y su guarda.php:<form name="webtaller" action="guarda.php" method="post"> nombre: <input type="text" name="nombre"><br> nick: <textarea name="nick"></textarea><br> <input type="submit" value="Enviar información"> </form>
Código:
en este último lo que hago es insertar en la tabla volu0 un nombre y un nick, pero quiero que también se me guarde el nombre del usuario que ha entrado, por eso he intentado eso de:<?php $link = mysqli_connect("127.0.0.1", "user", "pass"); mysqli_select_db($link, "bd"); $tildes = $link->query("SET NAMES 'utf8'"); //Para que se inserten las tildes correctamente $nombre = $_POST["nombre"]; $nick = $_POST["nick"]; @session_start(); $_SESSION['USUARIO']=array('user'=>$row[CAMPO_USUARIO_LOGIN]); if ($_SESSION["usuario"] = "SI"){ //evalúa si tu usuario NO esta logueado $_SESSION["usuario"] = $usr;} mysqli_query($link, "INSERT INTO volu0 VALUES ('$usr', '$nombre', '$nick')"); mysqli_close($link); // Cerramos la conexion con la base de datos echo 'Los datos han sido insertados en la base de datos'; ?>
Código:
pero claro en el campo usuario me guarda sí, soy muy nuevo en esto de php y no tengo narices de hacerlo, imagino que debe ser fácil y no lo consigo. Mi tabla en cuestión es sencilla, usuario, nombre y nick todos varchar de 60. ¿podéis echarme un cable? @session_start(); $_SESSION['USUARIO']=array('user'=>$row[CAMPO_USUARIO_LOGIN]); if ($_SESSION["usuario"] = "SI"){ //evalúa si tu usuario NO esta logueado $_SESSION["usuario"] = $usr;} mysqli_query($link, "INSERT INTO volu0 VALUES ('$usr', '$nombre', '$nick')