PHP:Autentificar usuarios en base de datos
De Foros del Web
Puedes hacer lo siguiente:
- Creas una tabla en tu base de datos (para el ejemplo: MySQL) donde tendrás al menos el nombre de usuario (usr_login ) y su contraseña (usr_pass ).
- es una buena práctica que pongas la conexión a la base de datos en un módulo aparte que sea llamado desde todas las páginas que usan la base de datos (en el ejemplo me conecto directamente)
- crea un módulo (yo lo llamo seguridad.php ) y coloca el siguiente código en él:
<? /* Autenticación */ $muerte = 'Acceso Denegado!!!! :-p'; if(!isset($PHP_AUTH_USER)) { header('WWW-Authenticate: Basic realm="Nombre del Site"'); header('HTTP/1.0 401 Unauthorized'); echo $muerte; exit; } else { // valido mi clave en el servidor ... if (@$db_link = mysql_connect("localhost", "usuario", "clave")) { @mysql_select_db("base_de_datos"); } $sql = "select * from usuarios where ((usr_login = '$PHP_AUTH_USER') and (usr_pass = '$PHP_AUTH_PW')) "; $qpass= mysql_query($sql, $db_link); if(mysql_num_rows($qpass)<>1) { echo $muerte; exit; } } ?>
Ahora al principio de cada una de tus páginas que necesite autenticar al usuario colocarás
<? include("seguridad.php");?>
- Para terminar te recuerdo que queda en tus manos el mejorar el código, por ejemplo puedes validar un límite de intentos fallidos, registrar fecha y hora de acceso del usuario así como las páginas "autenticadas" que ha visitado. También puedes darle más seguridad al código validando errores en el SQL, y muchos etcés ...
Nota: Este tipo de autentificación es vía HTTP y funciona bajo PHP instalado como Módulo de Apache y no como CGI
--Temaqueja 15 Nov 2002
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
