Foros del Web » Programando para Internet » PHP »

quiero validar usuario sin pasar por POST en autentificador de cluster

Estas en el tema de quiero validar usuario sin pasar por POST en autentificador de cluster en el foro de PHP en Foros del Web. Hola, pongo este mensaje para saber que tendria que modificar en el script de cluster para poder autentificar un usuario directamente sin pasar por formularios, ...
  #1 (permalink)  
Antiguo 07/01/2006, 18:23
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
quiero validar usuario sin pasar por POST en autentificador de cluster

Hola, pongo este mensaje para saber que tendria que modificar en el script de cluster para poder autentificar un usuario directamente sin pasar por formularios, os preguntarias porque, pues porque tengo una cookies con el usuario y la contraseña y quiero que lea la cookies y le pase el valor directamente sin pasar por formularios, aqui os dejo el aut_verifica.php

Código PHP:
<?
//  Autentificator
//  Gestión de Usuarios PHP+Mysql+sesiones
//  by Pedro Noves V. (Cluster)
//  [email protected]
//  v1.0  - 17/04/2002 Versión inicial.
//  v1.01 - 24/04/2002 Solucionado error sintactico en aut_verifica.inc.php.
//  v1.05 - 17/05/2002 Optimización código aut_verifia.inc.php
//  v1.06 - 03/06/2002 Corrección de errores de la versión 1.05 y error con navegadores Netscape
//  v2.00 - 18/08/2002 Optimización código + Seguridad.
//                     Ahora funciona con la directiva registre_globals= OFF. (PHP > 4.1.x)
//                     Optimización Tablas SQL. (rangos de tipos).
//  v2.01 - 16/10/2002 Solucionado "despistes" de la versión 2.00 de Autentificator
//                     en aut_verifica.inc.php y aut_gestion_usuarios.php que ocasinavan errores al trabajar
//                     con la directiva registre_globals= OFF.
//                     Solucionado error definición nombre de la sessión.
//
// Descripción:
// Gestión de Páginas restringidas a Usuarios, con nivel de acceso
// y gestión de errores en el Login
// + administración de usuarios (altas/bajas/modificaciones)
//
// Licencia GPL con estas extensiones:
// - Uselo con el fin que quiera (personal o lucrativo).
// - Si encuentra el código de utilidad y lo usas, mandeme un mail si lo desea.
// - Si mejora el código o encuentra errores, hagamelo saber el mail indicado.
//
// Instalación y uso del Gestor de usuarios en:
// documentacion.htm
//  ----------------------------------------------------------------------------


// Motor autentificación usuarios.

// Cargar datos conexion y otras variables.
require ("aut_config.inc.php");


// chequear página que lo llama para devolver errores a dicha página.

$url explode("?",$_SERVER['HTTP_REFERER']);
$pag_referida=$url[0];
$redir=$pag_referida;
// chequear si se llama directo al script.
if ($_SERVER['HTTP_REFERER'] == ""){
die (
"Error cod.:1 - Acceso incorrecto!");
exit;
}

$quetal $_POST['passw'];
if (
$quetal == "") {
$hola "USUARIO directo";
$adios "CONTRASEÑA directa en MD5";
} else {
$hola $_POST['user'];
$adios md5($_POST['passw']);
}

// Chequeamos si se está autentificandose un usuario por medio del formulario
if (isset($hola) && isset($adios)) {

// Conexión base de datos.
// si no se puede conectar a la BD salimos del scrip con error 0 y
// redireccionamos a la pagina de error.
$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or die(header ("Location:  $redir?error_login=0"));
mysql_select_db("$sql_db");

// realizamos la consulta a la BD para chequear datos del Usuario.
$usuario_consulta mysql_query("SELECT user_id,username,user_password,user_active FROM $sql_tabla WHERE username='".$hola."'") or die(header ("Location:  $redir?error_login=1"));

 
// miramos el total de resultado de la consulta (si es distinto de 0 es que existe el usuario)
 
if (mysql_num_rows($usuario_consulta) != 0) {

    
// eliminamos barras invertidas y dobles en sencillas
    
$login stripslashes($hola);
    
// encriptamos el password en formato md5 irreversible.
    
$password $adios;

    
// almacenamos datos del Usuario en un array para empezar a chequear.
     
$usuario_datos mysql_fetch_array($usuario_consulta);
  
    
// liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array.
    
mysql_free_result($usuario_consulta);
    
// cerramos la Base de dtos.
    
mysql_close($db_conexion);
    
    
// chequeamos el nombre del usuario otra vez contrastandolo con la BD
    // esta vez sin barras invertidas, etc ...
    // si no es correcto, salimos del script con error 4 y redireccionamos a la
    // página de error.
    
if ($login != $usuario_datos['username']) {
           
Header ("Location: $redir?error_login=4");
        exit;}

    
// si el password no es correcto ..
    // salimos del script con error 3 y redireccinamos hacia la página de error
    
if ($password != $usuario_datos['user_password']) {
        
Header ("Location: $redir?error_login=3");
        exit;}

    
// Paranoia: destruimos las variables login y password usadas
    
unset($login);
    unset (
$password);

    
// En este punto, el usuario ya esta validado.
    // Grabamos los datos del usuario en una sesion.
    
     // le damos un mobre a la sesion.
    
session_name($usuarios_sesion);
     
// incia sessiones
    
session_start();

    
// Paranoia: decimos al navegador que no "cachee" esta página.
    
session_cache_limiter('nocache,private');
    
    
// Asignamos variables de sesión con datos del Usuario para el uso en el
    // resto de páginas autentificadas.

    // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios
    
$_SESSION['usuario_id']=$usuario_datos['user_id'];
    
    
// definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usuario_nivel']=$usuario_datos['user_active'];
    
    
//definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usuario_login']=$usuario_datos['username'];

    
//definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado)
    
$_SESSION['usuario_password']=$usuario_datos['user_password'];


    
// Hacemos una llamada a si mismo (scritp) para que queden disponibles
    // las variables de session en el array asociado $HTTP_...
    
$pag=$_SERVER['PHP_SELF'];
    
Header ("Location: $pag?");
    exit;
    
   } else {
      
// si no esta el nombre de usuario en la BD o el password ..
      // se devuelve a pagina q lo llamo con error
      
Header ("Location: $redir?error_login=2");
      exit;}
} else {

// -------- Chequear sesión existe -------

// usamos la sesion de nombre definido.
session_name($usuarios_sesion);
// Iniciamos el uso de sesiones
session_start();

// Chequeamos si estan creadas las variables de sesión de identificación del usuario,
// El caso mas comun es el de una vez "matado" la sesion se intenta volver hacia atras
// con el navegador.

if (!isset($_SESSION['usuario_login']) && !isset($_SESSION['usuario_password'])){
// Borramos la sesion creada por el inicio de session anterior
session_destroy();
die (
"Para poder visualizar tendrá que aceptar cookies, por favor baje la privacidad de su navegador a MEDIA ALTA");
exit;
}
}
?>
  #2 (permalink)  
Antiguo 07/01/2006, 21:21
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Supongo que teniendo la cookie con las variables correspondientes al user y password y eliminando: if ($_SERVER['HTTP_REFERER'] == ""){
die ("Error cod.:1 - Acceso incorrecto!");
exit;
} para que te deje acceder directamente deberia funcionar.
Hasta luego.
  #3 (permalink)  
Antiguo 08/01/2006, 05:57
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
y que se hace con esta linea:

Código PHP:
if (isset($hola) && isset($adios)) { 
  #4 (permalink)  
Antiguo 08/01/2006, 08:50
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Esa linea comprueba que $hola y $adios existan para proceder con el script
  #5 (permalink)  
Antiguo 08/01/2006, 10:51
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Claro... $hola y $adios serian el uerbame & password ingresados por el usuario en el formulario.

Autentificator no trabaja con cookies, sino con variables de sesión... así que tendrás que hacer algunos cambios.

Supongo que igual necesitarás autenticar al usuario vía formulario en algún momento. Autentificator hace lo siguiente:
Código PHP:
if(vienes del formulario){
   
//Comparar user & pass del form con los datos almacenados en la BD.
   
   
if(algo mal){
      
//redirecciona a página de error
  
}

   
//Aqui se definen las variables de sesión.
   //Aquí debes agregar la deifición de tus cookies $user & $pass

}else{// O sea, si no se viene de formulario
   
if( NO existen las variables de sesion ){
     
//Se destruye la sesión y se pone mensaje de error.
   
}

El último else debería quedar algo así:
Código PHP:
}else{// O sea, si no se viene de formulario
   
if( NO existen las variables de sesion ){
      if( 
existen tus cookies ){
         
//Defines las variables de sesión.
      
}else{
          
//Destruyes la sesión y pone mensaje de error
      
}
   }

  #6 (permalink)  
Antiguo 09/01/2006, 11:27
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
yo el script no quiero que funcione con cokies quiero que funciona tal como es pero si detecta una cokkies en vez de pasarle el valor por POST se la pase directamente la cokies guardada user y pass en una variable

saludos
  #7 (permalink)  
Antiguo 09/01/2006, 11:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por escan_0
yo el script no quiero que funcione con cokies quiero que funciona tal como es pero si detecta una cokkies en vez de pasarle el valor por POST se la pase directamente la cokies guardada user y pass en una variable

saludos
Pues es la solución que te dió jpinedo en "psudo-código" .. El sistema de autentificación y seguimiento no irá por cookies .. sólo irá en cookies el dato del "usuario/contraseña" (encriptada.. la misma que guardas en MD5 en tus BBDD) para la opción "recordar usuario"

Por lo demás .. autentificator ya usa cookies para propagar el SID .. El tiempo de expiración de la cookie es de "0" (por defecto .. Autentificator no lo fuerza a nada concreto). Podrías usar y aporvechar esta funcionalidad de las sesiones para extender el tiempo de vida de la cookie que PHP crea para propagar el SID por más tiempo y a su vez el tiempo de expiración de la sesión (session.gc_maxtimelife) en consecuencia para continuar con la misma sesión ..

Bueno, esto tendrás que verlo bien por qué si siempre estás en la misma sesión tendrás que preocuparte de ir "limpiando" tus variables de la sesión cuando no las necesites (no todo es así de simple ..).

Un saludo,
  #8 (permalink)  
Antiguo 09/01/2006, 13:53
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
por eso mismo que as comentado al final no quiero ampliar la propia cookie que crea y dejarla en 0 tal como esta, para recordar contraseña utilizo mi cookies que solo me servidar para extraer una variable

saludos
  #9 (permalink)  
Antiguo 10/01/2006, 05:53
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
borre estas lineas:

Código PHP:
if ($_SERVER['HTTP_REFERER'] == ""){ 
die (
"Error cod.:1 - Acceso incorrecto!"); 
exit; 

y el script hace algo muy extraseña esta todo el rato actualizandose como un bucle, porque sera?

saludos
  #10 (permalink)  
Antiguo 10/01/2006, 06:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. te has fijado en el código anterior?

Código PHP:
$url explode("?",$_SERVER['HTTP_REFERER']); 
$pag_referida=$url[0]; 
$redir=$pag_referida
// chequear si se llama directo al script. 
if ($_SERVER['HTTP_REFERER'] == ""){ 
die (
"Error cod.:1 - Acceso incorrecto!"); 
exit; 

Si no vas a usar HTTP_REFERER .. tendrás que dejar fijo a un URL dato el valor de $redir .. concretamente el formulairo de Login que uses en el URL que esté completo.

Intenta comprender que hace el script. .no es tan complicado (apenas un "if") . .si no entiendes algo, pregunta, pero no pongas/quites código por hacerlo .. por qué así tendrás problemas como los que mencionas o comportamientos inesperados del script.

Un saludo,
  #11 (permalink)  
Antiguo 10/01/2006, 07:46
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
es que no comprendo he puesto como variable $redir = "dominio.com/index.php" y nada me dice acceso incorrecto, no se que hacer

saludos
  #12 (permalink)  
Antiguo 10/01/2006, 08:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No, .. en $redir debes usar el URL completo:

http://www.domino.com/index.php

Fijate que eso se aplica a un header() de tipo "Location" ...

Por lo demás tus "$hola" y "$adios" no sé que fin le das .. pero deberías usar nombres de variables más descriptivas ..

También usar los arrays superglobales $_POST y demás. No hagas:
$login != $usuario_datos['username']) {

usa $_POST['login'] o de donde venga ($_GET? ...)

Un saludo,
  #13 (permalink)  
Antiguo 10/01/2006, 11:20
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
cluster si puese la la direccion completa solo que para escribirlo aqui lo puse mas resumido porque creia que hay no estaba el problema, asi que no se donde esta el error, utilizo $hola y $adios por si el script utilizaba mas adelante las variables $pass o $user por algun sitio no tener errores

saludos
  #14 (permalink)  
Antiguo 10/01/2006, 13:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por escan_0
cluster si puese la la direccion completa solo que para escribirlo aqui lo puse mas resumido porque creia que hay no estaba el problema, asi que no se donde esta el error, utilizo $hola y $adios por si el script utilizaba mas adelante las variables $pass o $user por algun sitio no tener errores

saludos
OK,

Realmente no he probado tu versión de "Autentificator" .. no entiendo muy bien que pretendes hacer .. así que más por mi parte no te puedo ayudar.

Un saludo, y suerte.
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 08:46.