Professional Documents
Culture Documents
Requerimientos
Hosting (servidor local o web) PHP (5 de preferencia o editor de HTML, Php como dream weaver cs4 recomendado) 1 Base de datos My SQL Empecemos
Para el desarrollo de nuestra aplicacin necesitaremos la creacin de 4 archivos php: Conexin. Php Registro. Php Login. Php Perfil. Php
IMPORTANTE: Tengan cuidado al copiar y pegar el contenido de los archivos recuerden no dejar ningn espacio entre el inicio de lnea y la expresin <? Php.
Lo primero es crear una base de datos a la cual le vamos a poner el nombre de registro.
En la cual vamos a generar la siguiente consulta SQL: Cdigo: CREATE TABLE usuarios ( Id int(5) not null auto_increment, fecha int(10) not null, nick varchar(20) not null, pass varchar(32) not null,
mail varchar(40) not null, ip varchar(16) not null, primary key (id), key (nick,pass) ) Lo que estamos haciendo es crear una tabla en nuestra base de datos llamada usuarios, en la cual almacenaremos los datos de nuestros usuarios.
Luego empezaremos con la creacin de nuestro primer archivo conexin. Php, el cual se encarga de conectar nuestro sistema con la base de datos que creamos en el punto anterior.
Cdigo: <?php $nombre_server[1] = 'localhost'; //Servidor al cual nos vamos a conectar. $nombre_user[2] = 'root'; //Nombre del usuario de la base de datos. $password[3] = ''; //Contrasea de la base de datos $nombre_db[4] = 'registro'; //nombre de la base de datos
or
/*En este archivo tambin pondremos unas funciones necesarias para el registro y el login*/ session_start(); /*Funcin que se encarga de eliminar codigo malicioso de las variables.*/ function limpiar($var) { $var = trim($var);
$var = htmlspecialchars($var); $var = str_replace(chr(160),'',$var); return $var; } /*Funcin que se encarga de validar el email de registro para que sea correcto.*/ function validar_email($email){ $mail_correcto = 0; //compruebo unas cosas primeras if ((strlen($email) >= 6) && (substr_count($email,"@") == (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")) { if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {//miro si tiene caracter . if (substr_count($email,".")>= 1) {//obtengo la terminacion del dominio $term_dom = substr(strrchr ($email, '.'),1); //compruebo que la terminaci?n del dominio sea correcta if (strlen($term_dom)>1 (!strstr($term_dom,"@")) ) { //compruebo que lo de antes del dominio sea correcto $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1); $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1); if ($caracter_ult != "@" && $caracter_ult != ".") { && strlen($term_dom)<5 && 1) &&
/*Funcion que se encarga de validar si el usuario esta registrado en el sistema*/ function user_login() { if(!$_SESSION['id']) { exit ("Solo 1)'>Volver</a>"); } } ?> usuarios registrados, <a href='javascript:history.back(-
Ya tenemos nuestro archivo de conexin con la base de datos entonces continuamos con el archivo registro. Php que como su nombre lo dice se encargara de almacenar los usuarios en la base de datos.
Cdigo: <?php include("conexion.php"); //Sistema de registro
if(isset($_POST['registro']))//Vallidamos que el formulario fue enviado { /*Validamos que todos los campos esten llenos correctamente*/ if(($_POST['nick'] != '') && ($_POST['mail'] != '') ($_POST['pass'] != '') && ($_POST['conf_pass'] != '')) { if($_POST['pass'] != $_POST['conf_pass']) { echo '<br />Las contraseñas no coinciden'; } else { $date= time(); $nick= limpiar($_POST['nick']); $mail= limpiar($_POST['mail']); $pass= md5(md5(limpiar($_POST['pass']))); $ipuser= $_SERVER['REMOTE_ADDR']; $b_user= mysql_query("SELECT nick FROM usuarios WHERE nick='$nick'");
if($user=@mysql_fetch_array($b_user)) { echo '<br />El empleado ya esta registrado.'; mysql_free_result($b_user); //liberamos la memoria del query a la db } else { if(validar_email($_POST['mail'])) { mysql_query("INSERT INTO usuarios (fecha,nick,mail,pass,ip) values ('$date','$nick','$mail', '$pass','$ipuser')"); echo '<br />Te has registrado Correctamente, ahora podras iniciar sesión como usuario registrado.'; } else { echo '<br />El email no es valido.'; } } } } else { echo '<br />Deberas llenar todos los campos.'; } }
?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head>
</head> <body > <h2>Sistema de Registro</h2> <div align="center"> <form name="registrar" onsubmit="return validar()" /> <dt> <label>Usuario:</label></dt> <input type='text' name='nick' /><br /><br /> <dt><label>E-mail:</label></dt> <input type='text' name='mail' /><br /><br /> <dt><label>Contrasea:</label></dt> <input type="password" name='pass' /><br /><br /> <dt><label>Confirmar Contrasea:</label></dt> <input type="password" name='conf_pass' /><br /><br /><br /><br /> <input type="submit" name="registro" style="width:100px;" tabindex="6" value="Registrar" /> action="registro.php" method="post"
<input type="reset" name="Limpiar" style="width:100px;" tabindex="6" value="Limpiar" /> </form> <a href="login.php">Identificarse</a> </div> </body> </html>
include("conexion.php");
if(isset($_POST['login'])) { $nick= $_POST['nick']; $pass= md5(md5($_POST['pass'])); $b_user=mysql_query("SELECT * FROM usuarios WHERE nick='$nick'"); $ses = @mysql_fetch_assoc($b_user) ; if(@mysql_num_rows($b_user)) { if($ses['pass'] == $pass) { $_SESSION['id']= $_SESSION['fecha']= $ses["id"]; $ses["fecha"];
echo 'Nombre de usuario o Contraseña incorrecta.'; } } else { echo 'Nombre de Usuario o contraseña incorrecta.'; } }
if(isset($_GET['modo']) == 'desconectar') { session_destroy(); echo '<meta http-equiv="Refresh" content="2;url=login.php"> '; exit ('Te has desconectado del sistema.'); }
echo '<b>Fecha registro:</b> ' . date("d-m-Y - H:i", $_SESSION['fecha']) . '<br />'; echo '<b>Email:</b> ' . $_SESSION['mail'] . '<br />'; echo '<b>IP:</b> ' . $_SESSION['ip'] . '<br /><br />'; echo '<a href="login.php?modo=desconectar">Salir</a><br/> <br/>'; } else { ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Login</title>
</head> <body > <h2>Conetarse - Desconectarse</h2> <div align="center"> <form name="login_user" action="login.php" method="post" /> <dt> <label>Usuario:</label></dt> <input type='text' name='nick' /><br /><br /> <dt> <label>Password:</label></dt>
<input type="submit" name="login" style="width:100px;" tabindex="6" value="Entrar" /> <input type="reset" name="Limpiar" style="width:100px;" tabindex="6" value="Limpiar" /> </form> <a href="registro.php">Registrarse</a> </div> <?php } ?> </body> </html> Aqu no solo tenemos el encargado de iniciar la sesin de los usuarios, sino que tambin se cumplen dos funciones ms. Mostrar algunas opciones de4l perfil del usuario luego de verificar si esta logueado Terminar la sesin de usuario (desconectarse) Que podrs verlas funcionando a la hora de implementar el cdigo o en el ejemplo funcional que dejare al final. Hasta este momento, ya tienes todo el registro el logueo de usuarios totalmente funcional, as que hasta aqu ya tienes completo el sistema de informacin
El ultimo de nuestros archivos, simplemente es un archivo de ejemplo para mostrar cmo proteger nuestras paginas de intrusos y solo los usuarios registrados tengan acceso a ellas para esto crearemos un archivo llamado perfil. Php.
Cdigo: <?php
Include(conexin.php) User_login(); Echo <h2>Pagina solo para usuarios registrados</h2><br/>; Echo <b>nombre de usuario:</b>.$SESSION[nick].<br/>; Echo <b>Fecha de Registro:</b>.date(d-m-Y-H:i,$_SESSION[fecha]).<br/>; Echo <b>Mail :</b>.$SESSION[mail].<br/>; Echo <b>IP :</b>.$SESSION[ip].<br/>; Echo <a href=login.php?modo=desconectar>Salir</a>; ?> La funcin user_Login() es la encargada de verificar que el usuario este registrado de lo contrario le mostrar un aviso dicindole que no esta registrado y no le permitir ver el contenido de la pagina. Cdigo: User_login(); al principio luego de incluir el archivo de conexin. Este documento est registrado por su autor y est protegido por copyright.