Foros del Web » Programando para Internet » PHP »

Ayuda con el Autentificator

Estas en el tema de Ayuda con el Autentificator en el foro de PHP en Foros del Web. Bueno tengo la V. 2.01 del Autentificator de Cluster, me ha gustado mucho y se me dio por agregar más datos a la tabla usuarios ...
  #1 (permalink)  
Antiguo 22/09/2006, 14:39
 
Fecha de Ingreso: agosto-2006
Mensajes: 32
Antigüedad: 17 años, 7 meses
Puntos: 1
Pregunta Ayuda con el Autentificator

Bueno tengo la V. 2.01 del Autentificator de Cluster, me ha gustado mucho y se me dio por agregar más datos a la tabla usuarios para hacer una zona de clientes con información del servicio que compró. Mira e visto que en el aut_verifica.php sacaba los datos del usuario con este codigo.

Código:
    // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios
    $_SESSION['usuario_id']=$usuario_datos['ID'];
    
    // definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    $_SESSION['usuario_nivel']=$usuario_datos['nivel_acceso'];
    //definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado)
    $_SESSION['usuario_password']=$usuario_datos['pass'];
yo hice algunos cambios agregandoles esto
Código:
 
    $_SESSION['usuario_paquete']=$usuario_datos['paquete'];

    $_SESSION['usuario_registrado']=$usuario_datos['registrado'];

    $_SESSION['usuario_edisponibles']=$usuario_datos['edispone'];

    $_SESSION['usuario_actualizacion']=$usuario_datos['actualizacion'];
para definirle que tambien quiero estas variables y por supuesto las llame en el code que se pone para consultar a la BD
Código:
// realizamos la consulta a la BD para chequear datos del Usuario.
$usuario_consulta = mysql_query("SELECT ID, usuario,pass, nivel_acceso, web, paquete, registrado, edispone, actualizacion FROM $sql_tabla WHERE usuario='".$_POST['user']."'") or die(header ("Location:  $redir?error_login=1"));
Bueno, lo que sucede es que SOLO LAS paginas que muestran la información de las variables nuevas que hice lanzan este error.

Código:
Error cod.: 2 - Acceso incorrecto!
Soy novato en esto, y queria saber como puedo evitar eso y que las variables que agregue me las muestre correctamente
  #2 (permalink)  
Antiguo 22/09/2006, 15:01
 
Fecha de Ingreso: septiembre-2006
Mensajes: 32
Antigüedad: 17 años, 7 meses
Puntos: 0
arrancas el script con session_start()? (en todos los scripts que uses la variable $_SESSION, debe tener esta funcion al principio).

saludos
  #3 (permalink)  
Antiguo 22/09/2006, 16:11
 
Fecha de Ingreso: agosto-2006
Mensajes: 32
Antigüedad: 17 años, 7 meses
Puntos: 1
En todos los archivos que tenga esta variable??
  #4 (permalink)  
Antiguo 22/09/2006, 17:26
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 3 meses
Puntos: 33
Hola

he oido mucho ese Autentificator de Cluster, dond elo consigo para checarlo?
  #5 (permalink)  
Antiguo 22/09/2006, 18:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por omegafunky Ver Mensaje
he oido mucho ese Autentificator de Cluster, dond elo consigo para checarlo?
En

http://php.cluster-web.com/autentificator

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 22/09/2006, 18:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Brujo2 Ver Mensaje
En todos los archivos que tenga esta variable??
El sistema "Autentificator" en sí ya hace inicio del uso de sesiones (session_start() y más cosas; se define nombre de sesión también) en el archivo que se ha de incluir en todas las páginas autentificadas: aut_verifica.inc.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 22/09/2006, 18:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Brujo2 Ver Mensaje
Bueno tengo la V. 2.01 del Autentificator de Cluster, me ha gustado mucho y se me dio por agregar más datos a la tabla usuarios para hacer una zona de clientes con información del servicio que compró. Mira e visto que en el aut_verifica.php sacaba los datos del usuario con este codigo.

Código:
    // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios
    $_SESSION['usuario_id']=$usuario_datos['ID'];
    
    // definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    $_SESSION['usuario_nivel']=$usuario_datos['nivel_acceso'];
    //definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado)
    $_SESSION['usuario_password']=$usuario_datos['pass'];
yo hice algunos cambios agregandoles esto
Código:
 
    $_SESSION['usuario_paquete']=$usuario_datos['paquete'];

    $_SESSION['usuario_registrado']=$usuario_datos['registrado'];

    $_SESSION['usuario_edisponibles']=$usuario_datos['edispone'];

    $_SESSION['usuario_actualizacion']=$usuario_datos['actualizacion'];
para definirle que tambien quiero estas variables y por supuesto las llame en el code que se pone para consultar a la BD
Código:
// realizamos la consulta a la BD para chequear datos del Usuario.
$usuario_consulta = mysql_query("SELECT ID, usuario,pass, nivel_acceso, web, paquete, registrado, edispone, actualizacion FROM $sql_tabla WHERE usuario='".$_POST['user']."'") or die(header ("Location:  $redir?error_login=1"));
Bueno, lo que sucede es que SOLO LAS paginas que muestran la información de las variables nuevas que hice lanzan este error.

Código:
Error cod.: 2 - Acceso incorrecto!
Soy novato en esto, y queria saber como puedo evitar eso y que las variables que agregue me las muestre correctamente
Tendrías que aportar alguna muestra de los scripts donde dices que falla el sistema con código completo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 23/09/2006, 11:00
 
Fecha de Ingreso: agosto-2006
Mensajes: 32
Antigüedad: 17 años, 7 meses
Puntos: 1
Miralos!

Claro, mira lo que hice

Archivo Aut_verficia.inc.php
Código:
// 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;
}


// Chequeamos si se está autentificandose un usuario por medio del formulario
if (isset($_POST['user']) && isset($_POST['pass'])) {

// 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_conexion= mysql_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 ID, usuario,pass, nivel_acceso, web, paquete, registrado, edispone, actualizacion FROM $sql_tabla WHERE usuario='".$_POST['user']."'") 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($_POST['user']);
    // encriptamos el password en formato md5 irreversible.
    $password = md5($_POST['pass']);

    // 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['usuario']) {
       	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['pass']) {
        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['ID'];
    
    // definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    $_SESSION['usuario_nivel']=$usuario_datos['nivel_acceso'];
    
    //definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    $_SESSION['usuario_login']=$usuario_datos['usuario'];

    //definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    $_SESSION['usuario_web']=$usuario_datos['web'];

    //definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    $_SESSION['usuario_paquete']=$usuario_datos['paquete'];

    //definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    $_SESSION['usuario_registrado']=$usuario_datos['registrado'];

    //definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    $_SESSION['usuario_edisponibles']=$usuario_datos['edispone'];

    //definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    $_SESSION['usuario_actualizacion']=$usuario_datos['actualizacion'];

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


    // 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 ("Error cod.: 2 - Acceso incorrecto!");
exit;
}
}
?>
Archivo Misservicios.php

Código:
<?
//  Autentificator
//  Gestión de Usuarios PHP+Mysql+sesiones
//  by Pedro Noves V. (Cluster)
//  [email protected]
// ------------------------------------------
require("aut_verifica.inc.php");
$nivel_acceso=10; // Nivel de acceso para esta página.
// se chequea si el usuario tiene un nivel inferior
// al del nivel de acceso definido para esta página.
// Si no es correcto, se mada a la página que lo llamo con
// la variable de $error_login definida con el nº de error segun el array de
// aut_mensaje_error.inc.php
if ($nivel_acceso <= $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}
?>
<b>Correos (E-mails) disponibles: <? echo $_SESSION['usuario_edisponibles'] ?><br></b>
<?if ( 0 == $_SESSION['usuario_edisponibles']){
echo"No puedes agregar nuevos e-mails, solicita Soporte Técnico para obtener nuevos e-mails";
}
else {
echo"<a href=\"solicitaremail.php\">Crear nuevo correo</a>";
}
?></font><p align="left">
<font face="Verdana" size="2">
<b>Subdominios disponibles: Ilimitado<br></b><font color="#0000FF">
<a href="subdominio.php">Solicitar nuevo subdominio</a></font></font><p align="left">
<b><font face="Verdana" size="2">Actualizaciones disponibles: <? echo $_SESSION['usuario_actualizacion'] ?></font></b><font face="Verdana" size="2"><br>
<?if ( 0 == $_SESSION['usuario_edisponibles']){
echo"No tienes más actualizaciones gratituas, para comprar una solicita Soporte Técnico";
}
else {
echo"<a href=\"actualizacion.php\">Solicitar Actualización gratitua</a>";
}
?>
  #9 (permalink)  
Antiguo 23/09/2006, 21:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Sobre tus "if()" que haces:

Código PHP:
if ( == $_SESSION['usuario_edisponibles']){ 
Prefiero usar:

Código PHP:
if (empty($_SESSION['usuario_edisponibles'])){ 
Por lo demás verifica que valores han tomado todas las variables de tu sesión usando:

Código PHP:
echo "<pre>";
print_r($_SESSION);
echo 
"</pre>"
(usalo despues del include("aut_verifica.inc.php") en tus própios scripts, pues ahí ya se inicia la sesión y demás.)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 25/09/2006, 15:21
 
Fecha de Ingreso: agosto-2006
Mensajes: 32
Antigüedad: 17 años, 7 meses
Puntos: 1
Ya probé con lo que me dijiste, aún sigue funcionando mal.

Código:
<?
//  Autentificator
//  Gestión de Usuarios PHP+Mysql+sesiones
//  by Pedro Noves V. (Cluster)
//  [email protected]
// ------------------------------------------
require("aut_verifica.inc.php");
$nivel_acceso=10; // Nivel de acceso para esta página.
// se chequea si el usuario tiene un nivel inferior
// al del nivel de acceso definido para esta página.
// Si no es correcto, se mada a la página que lo llamo con
// la variable de $error_login definida con el nº de error segun el array de
// aut_mensaje_error.inc.php
if ($nivel_acceso <= $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}
echo "<pre>"; 
print_r($_SESSION); 
echo "</pre>";  
?>
Y me sale
Error cod.: 2 - Acceso incorrecto!
  #11 (permalink)  
Antiguo 25/09/2006, 15:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero como estás ejecutando el ejemplo que expones? .. lo llamas directo por el URL? .. te has autentificado antes?

El problema que tienes es con las sesiones en sí, no se propaga el SID en tu aplicación.

Autentificator requiere que se propague el SID en cookies, así que necesitas:

php.ini
session.use_trans_sid = 0
session.use_cookies = 1
session.use_only_cookies = 1

Y un navegador que acepte las cookies que PHP va a generar (ojo con antivirus y demás que bloquean cookies, aceptalas)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 25/09/2006, 15:46
 
Fecha de Ingreso: agosto-2006
Mensajes: 32
Antigüedad: 17 años, 7 meses
Puntos: 1
De acuerdo

Disculpad mi torpeza, he estado averiguando las diferentes formas. extrañamente ya me funcionan a la perfección...

Extrañamente en el firefox no funciona

Última edición por Brujo2; 25/09/2006 a las 15:58
  #13 (permalink)  
Antiguo 25/09/2006, 18:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Brujo2 Ver Mensaje
Disculpad mi torpeza, he estado averiguando las diferentes formas. extrañamente ya me funcionan a la perfección...

Extrañamente en el firefox no funciona
Lo más probable es que tengas algún problema en firefox con las cookies (tal vez ahí las bloqueas) .. revisalo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 12:01.