Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/07/2005, 18:43
augusto_jaramil
 
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