Tema: FAQ's de PHP
Ver Mensaje Individual
  #10 (permalink)  
Antiguo 15/11/2002, 09:59
Avatar de temaqueja
temaqueja
 
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 22 años, 2 meses
Puntos: 4
Tema: SEGURIDAD

Pregunta: Autentificar usuarios en base de datos

Respuesta:

Puedes hacer lo siguiente:
  • Creas una tabla en tu base de datos (para el ejemplo: MySQL) donde tendras 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 paginas 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:
    Código PHP:
    <?
    /* 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')) "
    ;

        
    $qpassmysql_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
    Código PHP:
    <? 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 via HTTP y funciona bajo PHP instalado como Módulo de Apache y no como CGI
__________________
_________________________
La computadora nació para resolver problemas que antes no existían

Última edición por temaqueja; 15/11/2002 a las 17:09