Foros del Web » Programando para Internet » PHP »

Validacion de usuarios

Estas en el tema de Validacion de usuarios en el foro de PHP en Foros del Web. Saludos a todos, tengo algo entre manos, tengo una pantalla de login, pero los usuarios tienen que ser validados con la tabla usuarios del postgresql, ...
  #1 (permalink)  
Antiguo 23/07/2005, 09:38
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
Validacion de usuarios

Saludos a todos, tengo algo entre manos, tengo una pantalla de login, pero los usuarios tienen que ser validados con la tabla usuarios del postgresql, eso no se como hacerlo.

Alguien me podra ayudar?, se lo agradeceria mucho. Gracias
__________________
El aprendiz.
  #2 (permalink)  
Antiguo 23/07/2005, 18:43
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 551
Antigüedad: 19 años, 10 meses
Puntos: 8
Que Tal juandedios...

Adjunto te envio un script que tengo en produccion... aunque yo utilizo el abtractor ADODB creo que te puede servir. Como veras lo tengo funcionando para Oracle, Postgres e Informix

La forma en que trabaja es la siguiente:

Desde el index.php valido si el usuario ingresa por primera vez a mi pagina (PHP_AUTH_USER) si no es asi hace el llamado a este script para validacion en la BD.
Debes tener en cuenta que la tabla donde tienes registrados los usuarios autorizados contenga la columna (atributo) "usr_pass char(32)"

Este script fue adaptado desde uno que publico Cluster en este foro

Código PHP:
<?php
  session_start
();

function 
login_error()
{
  die;
}

if (!isset(
$PHP_AUTH_USER) || strlen($PHP_AUTH_USER) == 0)
{
 
header("WWW-Authenticate: Basic realm=\"Informaweb\"");
 
header("HTTP/1.0 401 Unauthorized");
 
//Result if user hits cancel button
 
login_error();
}
else
{
   
//check the login and password
   
if('=>test on login and password<=')
   {

      
define ('ADODB_ASSOC_CASE',0);
      
define ('ADODB_FETCH_ASSOC',0);

     include_once (
'adodb/adodb.inc.php');

      
$base "rsn";
      
$motor trae_motor();
      
$usu "informa";
      
$pass "informa";
      switch (
$motor)
      {
         case 
"Oci8po":
            
$cstr "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=".$_SERVER["SERVER_ADDR"].")(PORT=1521)) (CONNECT_DATA=(SID=$base)))";
            
$db ADONewConnection($motor);
            
$db->Connect($cstr$usu$pass);
         break;

         case 
"postgres":
            
$db ADONewConnection('postgres7');
            
$connex="host=".$_SERVER["SERVER_ADDR"]." port=5432 dbname=rsn user=postgres";
            
$db->Connect($connex);
         break;


         default :
            
$dsn "informix://informix@$INFORMIXSERVER/$base";
            
$db ADONewConnection($dsn);
            if (!
$db) die($dns.' '.$db->ErrorMsg() . " " "ABRIRBD ---> " "  " $dsn);
            
$db->SetFetchMode(ADODB_FETCH_ASSOC);
            
$db->CursorType=0;
         break;
      }
      
$sql "select usr_pass from nue_usuario
                      where usuario = '$PHP_AUTH_USER'"
;

      
$qpass=$db->GetRow($sql);

      if (
count($qpass) > 0)
      {                                             
// Existe el usuario
         
if (strlen(trim($qpass['usr_pass'])) != 0// Tiene Password Registrado
         
{
            if (
$qpass['usr_pass'] == md5($PHP_AUTH_PW))
            {                                       
// Password Ok
            
}
            else
            {                                       
// Password Errado
               
header"WWW-Authenticate: Basic realm=\"Informaweb\"");
               
header("HTTP/1.0 401 Unauthorized");


               
//Result if user does not give good login and pass
               
login_error();
            }
         }
         else
         {                                      
// No tiene Password Registrado
            
if (strlen(trim($PHP_AUTH_PW)) == 0// No Ingreso Password
            
{
               
header"WWW-Authenticate: Basic realm=\"Informaweb\"");
               
header("HTTP/1.0 401 Unauthorized");

               
//Result if user does not give good login and pass
               
login_error();
            }
            else
            {                                  
// Ingreso Password
               
$pass md5($PHP_AUTH_USER);
               
$rs $db->Execute("Update nue_usuario set usr_pass = '$pass' WHERE usuario='$PHP_AUTH_USER'");
               if (!
$rs)
                  die;
               
?> <script> alert ("Su Calve Ha Sido Asignada\n No la olvide por favor");
                  </script>
               <?
            
}
         }
      }
      else
      {                                               
// No existe el usuario
         
header"WWW-Authenticate: Basic realm=\"Informaweb\"");
         
header("HTTP/1.0 401 Unauthorized");

         
//Result if user does not give good login and pass
         
login_error();
      }
   }
   else
   {
      
//This re-asks three times the login and password.
      
header"WWW-Authenticate: Basic realm=\"Test Authentication System\"");
      
header("HTTP/1.0 401 Unauthorized");

      
//Result if user does not give good login and pass
      
login_error();
  }
}



function 
trae_motor()
{
   if (
strlen($motor) == 0)
   {
      if (
file_exists("../logon.txt"))
      {
         
$gestor fopen("../logon.txt","r");
         
$a 0;
         while (
$info_usuario fscanf($gestor"%s"))
         {
           list (
$motor) = $info_usuario;
         }
         
fclose($gestor);
      }
      else
         
$motor "informix";
   }
   if (
strlen($motor) == 0)
      
$motor "informix";
   return(
$motor);
}
?>
Un Saludo
  #3 (permalink)  
Antiguo 24/07/2005, 11:14
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
una pregunta antes de probarlo, este scrip funciona para validar a loa usuarios del postgres???
__________________
El aprendiz.
  #4 (permalink)  
Antiguo 25/07/2005, 11:37
 
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panama
Mensajes: 551
Antigüedad: 19 años, 10 meses
Puntos: 8
Que tal juandedios...

Me explico... como tengo actualmente configurado el ambiente postgres todos los usuarios establecen la conexion a mi BD con el usuario "postgres". Tengo una tabla donde estan registrados todos los usuarios autorizados para acceder al sistema (nue_usuario... a estos los busco en mi tabla de acuerdo con el usuario con que se registran (lo capturo por medio de las variables $_SERVER["PHP_AUTH_USER"] y $_SERVER["PHP_AUTH_PW"]).

Ahora, el password lo dejo registrado en mi tabla con encripcion md5 por lo cual debo convertir el password con que se registra el usuario a este mismo metodo para poder comparar las dos cadenas ya que hasta donde tengo entendido el metodo md5 no tiene forma de decriptar (pasar o traducir a cristiano)

Un Saludo

Última edición por augusto_jaramil; 25/07/2005 a las 11:42
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:34.