Lo primero que debemos tener es una conexión a la base de datos dónde tengas almacenada la información de los usuarios. Para ello utilizaremos un archivo de conexión, que será más o menos así:
<?php function Conectarse() { //servidor = direccion del servidor //user = usuario de la base de datos //pass = contraseña de la base de datos if (!($link=mysql_connect("servidor","user","pass"))) { echo "Error conectando a la base de datos."; exit(); } if (!mysql_select_db("nombre_base_datos",$link)) { echo "Error seleccionando la base de datos."; exit(); } return $link; } ?>Lo único que hace esta función es comprobar que la conexión se realiza correctamente y devuelve el valor de conexión. En caso negativo, comunica mediante un echo que la conexión a fracasado.
El siguiente código, indica como guardar los datos del usuario (en caso de que le login sea correcto) y mantener la sesión:
<?php session_start(); function Login() { //Incluimos el archivo de conexión (en este caso se llama Conexion.inc) include("Conexion.inc"); //Obtenemos la conexión llamando a la función Contectarse(); $link=Conectarse(); //los siguientes $_POST los obtenemos mediante un formulario poniendo //en la propiedad action la opción action = "post" $usuario = $_POST["usuario"]; $contrasena = $_POST["contrasena"]; //en la query compruebas que el usuario exista en la base de datos $query="select * from usuarios where usuarios.Usuario='$usuario'"; $result=mysql_db_query("iTrunks",$query,$link); //Entrará en el if si ha encontrado algún resultado if(mysql_num_rows($result)!=0){ $array=mysql_fetch_array($result); //comprueba que la contraseña sea correcta //el md5 es un sistema de encriptación, si no está encriptada //sólo tendréis que quitar el md5 y dejar solo la variable if($array["Contrasena"] == md5($contrasena)){ $_SESSION["usuario"] = $usuario; $_SESSION["contrasena"] = md5($contrasena); //la variable $array contiene todos los datos de la base de datos //para obtenerlos solamente hay que poner entre los corchetes //el nombre de la columna $_SESSION["nombre"] = $array["Nombre"]; $_SESSION["apellidos"]=$array["Apellidos"]; $_SESSION["email"]=$array["Email"]; //y cogemos todos los datos que queremos de la base de datos session_register($_SESSION); } } } ?>Para aclarar las dudas os pongo un ejemplo de como realizar un formulario de login:
<?php //Obtenemos la variable aceptar, para comprobar si ha pulsado el botón $aceptar = $_POST["aceptar"]; if ($aceptar){ //incluimos el archivo de login anterior, en este caso 'login.php' include("login.php"); Login(); //si se ha conectado correctamente entrará en el if if(isset($_SESSION['usuario'])){ printf('Se ha logueado correctamente'); }else{ printf('Login incorrecto'); } //si ya había iniciado sesión entrará en el if }else if (isset($_SESSION['usuario'])){ printf('Se ha logueado correctamente'); }else{ //redireccionamos a la misma página printf('
Login | |
---|---|
Usuario: | |
Contraseña: | |
9 comentarios:
Muy buen ejemplo, así da gusto ;)
Muchas gracias Dani, todo un placer que leas mi blog.
Saludos!
gracias!! pero.. con esto ya no tendre que hacer login de nuevo cuando actualizo la pagina de mi web???
No, no hará falta. Solamente cuando pase x tiempo o "destruyas" sesión
como hago para que un usuario previamente logeado no se puede loguear nuevamente si no que muestra un msj indicando que ya este usuario tiene una sesion abierta
Muy facil. Debes poner antes de nada un if(isset($_SESSION['usuario'])) así comprobarás si está logado o no.
pregunta maestro,
tengo pagina1 donde me logeo y se conecta a BD y se validan, pero quiero ir a a otra pagina pero ya logeado con los mismos datos, como se puede hacer??
ayuda por favor...
gracias"
Hola Manu,
Lo único que tienes que hacer es en la página del login, crear variables de session. Por ejemplo, si quieres guardar el nombre, harías:
session("nombre") = valor;
Con eso deberías poder acceder desde cualquier página.
Gracias por la visita!
amigo, excelente ejemplo, lo estoy poniendo en uso, y estoy en el mismo dilema de "Manu"... ¿Podrías darme un poco más de detalles?, necesito que las siguientes páginas sean accesibles sólo si se está logueado.
Saludos y gracias por todo !
Publicar un comentario