Un sistema de registro y reconocimiento de usuarios es utilizado para garantizar el acceso a ciertas áreas de nuestro sitio Web.
Debemos de crear una tabla que vamos a utilizar en la base de datos MySQL.
CREATE TABLE `usuarios` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`usuario` VARCHAR(20) NOT NULL,
`password` VARCHAR(10) NOT NULL,
`descripcion` TEXT character SET utf8 collate utf8_spanish_ci,
`email` VARCHAR(45) character SET utf8 collate utf8_spanish_ci DEFAULT NULL,
`fecha` DATE NOT NULL,
PRIMARY KEY (`id`)
)
Ya tenemos la estructura de nuestra tabla de usuarios.
Ahora una pagina index.php donde colocaremos el siguiente código
PHP:
- echo 'Bienvenido, ';
- echo '<p><a href="logout.php">Logout</a></p>';
- }else{
- echo '<p><a href="login.php">Login</a></p>
- <p><a href="registrar.php">Registrar</a></p>';
- }
?>
Ahora el formulario para hacer login.php
HTML:
- <form action="validar_usuario.php" method="post">
- Usuario:<input type="text" name="usuario" size="20" maxlength="20" />
- <br />
- Password:<input type="password" name="password" size="10" maxlength="10" />
- <br />
- <input type="submit" value="Ingresar" />
</form>
Seguimos con el archivo validar_usuario.php el cual verificará los datos del archivo login.php
PHP:
- //datos para establecer la conexion con la base de mysql.
- mysql_connect('localhost','usuario','password')or die ('Ha fallado la conexión: '.mysql_error());
- function quitar($mensaje)
- {
- return $mensaje;
- }
- {
- // Puedes utilizar la funcion para eliminar algun caracter en especifico
- //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
- //$password = $HTTP_POST_VARS["password"];
- // o puedes convertir los a su entidad HTML aplicable con htmlentities
- $password = $HTTP_POST_VARS["password"];
- if($row["password"] == $password){
- $_SESSION["k_username"] = $row['usuario'];
- echo '<a href="index.php">Index</a></p>';
- //Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
- /*Ingreso exitoso, ahora sera dirigido a la pagina principal.
- <SCRIPT LANGUAGE="javascript">
- location.href = "index.php";
- </SCRIPT>*/
- }else{
- echo 'Password incorrecto';
- }
- }else{
- echo 'Usuario no existente en la base de datos';
- }
- }else{
- echo 'Debe especificar un usuario y password';
- }
?>
El archivo registrar.php, ahí crearemos un usuario nuevo.
PHP:
- //datos para establecer la conexion con la base de mysql.
- mysql_connect('localhost','usuario','password')or die ('Ha fallado la conexión: '.mysql_error());
- function formRegistro(){
- ?>
- <form action="registrar.php" method="post">
- <input type="text" name="username" size="20" maxlength="20" /><br />
- <input type="password" name="password" size="10" maxlength="10" />
- Confirma: <input type="password" name="password2" size="10" maxlength="10" /><br />
- <input type="text" name="email" size="20" maxlength="40" /><br />
- <input type="submit" value="Registrar" />
- </form>
- <?php
- }
- // verificamos si se han enviado ya las variables necesarias.
- $username = $_POST["username"];
- $password = $_POST["password"];
- $password2 = $_POST["password2"];
- $email = $_POST["email"];
- // Hay campos en blanco
- if($username==NULL|$password==NULL|$password2==NULL|$email==NULL) {
- echo "un campo está vacio.";
- formRegistro();
- }else{
- // ¿Coinciden las contraseñas?
- if($password!=$password2) {
- echo "Las contraseñas no coinciden";
- formRegistro();
- }else{
- // Comprobamos si el nombre de usuario o la cuenta de correo ya existían
- if ($email_exist>0|$username_exist>0) {
- echo "El nombre de usuario o la cuenta de correo estan ya en uso";
- formRegistro();
- }else{
- $query = 'INSERT INTO usuarios (usuario, password, email, fecha)
- echo 'Ahora puede entrar ingresando su usuario y su password <br />';
- ?>
- <FORM ACTION="validar_usuario.php" METHOD="post">
- Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br />
- Password: <INPUT TYPE="password" NAME="password" SIZE=10 MAXLENGTH=20><br />
- <INPUT TYPE="submit" VALUE="Ingresar">
- </FORM>
- <?php
- }
- }
- }
- }else{
- formRegistro();
- }
?>
Finalmente el archivo logout.php, ahí cerraremos la sesión.
PHP:
- // Borramos toda la sesion
- echo 'Ha terminado la session <p><a href="index.php">index</a></p>';
- ?>
- <SCRIPT LANGUAGE="javascript">
- location.href = "index.php";
</SCRIPT>
El sistema creado es sencillo para que sea fácil de entender, Y no olvides dejar tus comentarios.
Actualización: debido a los problemas que hay al momento de hacer copy/paste se anexan los archivos del ejemplo. Recuerda que es solo el principio, falta:
Encriptar las claves antes de enviarlas, hacer la conexión como función y todo lo que se te ocurra o puedas aportar.
Actualización.
A los amigos que me han sobre las medidas de seguridad que debemos de procurar, algunas son:
A los amigos que me han sobre las medidas de seguridad que debemos de procurar, algunas son:
Cuando el usuario mete algún campo erróneo o deja algo en blanco se llama a la función formRegistro(); y borra todos los campos aunque estén correctos, ¿cómo puedo mantener los campos ya rellenados? para no hacer al usuario que vuelva a meter los datos.
Puedes utilizar algo asi :
value="<?php if(isset($_post['campo']) echo $_post['campo']; ?>"
y recuerda utilizar htmlentities y html_entity_decode para evitar la inyección de código.
Y para los amigos que me han preguntado como podemos bloquear las paginas si no hace login, les comento que yo tengo un sistema basado en niveles y que más adelante la publicaré, mientras tanto podemos hacer una interpretación más ligera y sería algo más o menos asi:
Agregamos una tabla de nombre autorizaciones, y 3 campos:
id - autonumérico
pagina - varchar (en este campo vamos a ingresar las secciones o página donde necesitan hace login para poder verlas)
usuario - texto largo (los nombres de los usuarios con autorización para ver esta pagina separados por comas)
id - autonumérico
pagina - varchar (en este campo vamos a ingresar las secciones o página donde necesitan hace login para poder verlas)
usuario - texto largo (los nombres de los usuarios con autorización para ver esta pagina separados por comas)
Vamos a crear una pagina con el nombre de funciones.php con el siguiente código:
PHP:
- function conectar(){
- //datos para establecer la conexion con la base de mysql.
- }
- function puede_ver($pagina=''){
- $usuarios=$row['usuario']; // obtenemos los nombres de los usuarios
- return true;
- }else{ // si no pues un false como respuesta
- return false;
- }
- }
- }
?>
Olvidandonos un poco de la página index.php vamos a crear nuestra primer página restringida con el nombre visita_fotopex.php, con este método no solo puedes restringir el acceso a una pagina, lo puedes hacer por secciones, por ejemplo para restringir a una página completa el código de visita_fotopex.php seria así:
PHP:
- // no olvidemos incluir nuestras funciones
- include("funciones.php");
- conectar();
- if (puede_ver('pagina')==false){
- die('<br /><br />No tiene permiso para esta área, consulte a <a href="http://empresario.mx">www.empresario.mx</a><br /><br /><br />');
- }
?>
PHP:
- // no olvidemos incluir nuestras funciones
- include("funciones.php");
- conectar();
- if (puede_ver('seccion_a')){
- echo '<br /><br />Ahora puedes ver esta sección y sigue visitando <a href="http://empresario.mx">www.empresario.mx</a><br /><br /><br />';
- }
?>






0 comentarios:
Publicar un comentario