Foros del Web » Programando para Internet » PHP »

¿Cómo pasar variables a través del Autentificator de Cluster?

Estas en el tema de ¿Cómo pasar variables a través del Autentificator de Cluster? en el foro de PHP en Foros del Web. Hola! Tengo una página php que muestra una lista de empresas, si hago clik en alguna me muestra detalles de esa empresa en otra página ...
  #1 (permalink)  
Antiguo 03/10/2006, 19:34
wdc
 
Fecha de Ingreso: mayo-2005
Mensajes: 25
Antigüedad: 18 años, 11 meses
Puntos: 0
¿Cómo pasar variables a través del Autentificator de Cluster?

Hola!

Tengo una página php que muestra una lista de empresas, si hago clik en alguna me muestra detalles de esa empresa en otra página php, en esta tengo un botón llamado "modificar datos empresa" que al pulsarlo me presenta el formulario de login y pass de Autentificator pero cuando he puesto usuario y contraseña no me llega la variable que identifica a la empresa a la página donde se supone que modifico sus datos. necesito esa variable para extraer los datos de la empresa desde mi bbdd hacia el formulario para poder modificarlos, básicamente la vairable que necesito es la primary key de la empresa.

me dí cuenta que al hacer la validación Autentificator destruye la variable que intento pasar desde la página de login y pass (allí la variable existe ya que la muestro por pantalla). Lo mismo ocurre si me equivoco de password, la variable que estoy pasando se borra.

Hay alguna forma de pasar esta variable al formulario donde hago la modificación de datos de la empresa?

gracias.

w.
  #2 (permalink)  
Antiguo 03/10/2006, 21:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Realmente no entendí donde tienes el problema y que afecta "Autentificator".

Autentificator no es más que un sistema de gestión de usuarios bajo sesiones. Crea su própia sesión con su nombre dado (por qué usa session_name()) .. No sé como tu gestionas tus variables, si las propagas en variables de sesión o las pasas por el URl o que ..

Deberías exponer el código completo de los scripts que presentan el problema para ver el proceso en su contexto.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 04/10/2006, 07:52
wdc
 
Fecha de Ingreso: mayo-2005
Mensajes: 25
Antigüedad: 18 años, 11 meses
Puntos: 0
hola Cluster, gracias por responder.

poner todo el código es muy largo y cansador a la vista así que pondré las partes involucradas solamente ok?

básicamente mi sistema tiene una página que muestra una lista de empresas, el nombre de cada empresa tiene asociado un link a otra página donde se muestran los detalles de dicha empresa, ejemplo:

Código PHP:
echo "<TD width='210' align=left><FONT face='Verdana' color='#336699' size='1'><A href=detalles_empresa.php?accion=1&cod_bus=$row[0]>$row[1]</A></FONT></TD>";[/ 
donde accion=1 indica mostrar los detalles de la empresa en modo sólo lectura y cod_bus es la primary key de la empresa en mi base de datos ($row[0]). $row[1] es el nombre de la empresa.

en la segunda página (detalles_empresa.php) tengo un botón con el siguiente código:

Código PHP:
echo "<INPUT class=MBoton align=center TYPE='button' value='    Modificar Datos    '  onclick='fmodificar_empresa()'>";[/ 
y la función fmodificar_empresa es esta:

Código PHP:
function fmodificar_empresa() { 
        
location.href ='modificar_empresa.php?cod_bus='document.formul.cod_bus.value;
   } 
donde formul es el nombre del formulario que muestra los detalles de la empresa y cod_bus es la primary key de empresa que la he pasado mediante GET desde la pagina anterior.

la página modificar_empresa.php es donde ingreso usuario y contraseña, en ella recibo cod_bus mediante GET sin problemas, ver este código:

Código PHP:
echo"gcod_bus:$_GET[cod_bus]";
      echo 
"<FORM name='formul' method='post' action='aut_modificar_empresa.php?'>";
      echo 
"    <input type=hidden name='cod_bus' value=$_GET[cod_bus]>"
hasta acá todo ok, el problema es que cuando pongo usuario y contraseña la página donde puedo modificar los datos de la empresa no recibe la variable cod_bus, de alguna forma el proceso de validación del usuario destruye esta variable o borra su valor, lo he comprobado porque si ingreso mal la contraseña o el usuario $_GET[cod_bus] pierde su valor.

en la pagina aut_modificar_empresa.php he puesto como primera cosa el código de Autentificator tal como leí en las instrucciones:

Código PHP:
<?
//  Autentificator
//  Gestión de Usuarios PHP+Mysql
//  by Pedro Noves V. (Cluster)
//  [email protected]
//  ------------------------------
require("aut_verifica.inc.php"); // incluir motor de autentificación.
echo "<pre>";
print_r($_SESSION);
echo 
"</pre>";
$nivel_acceso=0// definir nivel de acceso para esta página.
if ($nivel_acceso $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}
require (
"aut_config.inc.php"); // incluir configuracion.
$pag=$_SERVER['PHP_SELF'];  // el nombre y ruta de esta misma página.
?>
sin embargo en esta página $_POST[cod_bus] está vacía con lo cual mi consulta select a la base de datos no trae los datos de la empresa (select * from empresa where id_empresa=$_POST[cod_bus]).

eso es a grandes rasgos, aclaro que las contraseñas están bien, el acceso a la base de datos igual, etc. de hecho cuando ingreso una nueva empresa también uso Autentificator y no tengo problemas (al crear una empresa no necesito pasar variables por lo tanto no tengo el inconveniente que tengo al modificarlas).

gracias de antemano amigos, ojalá me puedan ayudar.

atte.

w.
  #4 (permalink)  
Antiguo 04/10/2006, 09:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
hasta acá todo ok, el problema es que cuando pongo usuario y contraseña la página donde puedo modificar los datos de la empresa no recibe la variable cod_bus, de alguna forma el proceso de validación del usuario destruye esta variable o borra su valor, lo he comprobado porque si ingreso mal la contraseña o el usuario $_GET[cod_bus] pierde su valor.
Si, .. Autentificator si te fijas en su código principal: aut_verifica.inc.php veras que al validar y existir un error, redirecciona .. también lo hace cuando autentifica (redirecciona a si misma para que queden disponibles tus variables en la sesión realmente).

El proceso "natural" de uso de Autentificator sería:

Página de ingreso a tu sistema, validaciones y login en general -> entrada a tu sistema (con el usuario ya autentificado).

Por la filosofía de Autentificator no es aplicable que vengas ya de otros scripts con ciertas variables en GET/POST/SESSION y pretendas hacer "login" en ese punto.

Las redirecciones en aut_verifica.inc.php las hace en las sentencias:

header("Location: ....");

No es recomendable que como "parche" ahí en ese URL que se redireccionas indiques tus variables que llegan en GET/POST, limitarías el ambito de funcionamiento del código de validación "genérico".

Te recomiendo usar la filosofía que te menciono:
Pide autentificación -antes- para usar tu sistema .. ahí podrás disfrutar ya de la sesión activa y creada por Autentificator para por ejemplo .. propagar esos datos que vas pasando por el URL en forma segura (donde corresponda).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 04/10/2006, 09:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Otro "parche" que puedes usar es guardar la variable en otra variable de sesion, justo antes de "validar" a tu usuario, por decir en este codigo:
Código PHP:
echo"gcod_bus:$_GET[cod_bus]";
$_SESSION['cod_bus'] = $_GET['cod_bus'];
      echo 
"<FORM name='formul' method='post' action='aut_modificar_empresa.php?'>";
      echo 
"    <input type=hidden name='cod_bus' value=$_GET[cod_bus]>"
Asi una vez que haz verificado y validado tu usuario regresas el valor desde $_SESSION['cod_bus'].
  #6 (permalink)  
Antiguo 04/10/2006, 10:02
wdc
 
Fecha de Ingreso: mayo-2005
Mensajes: 25
Antigüedad: 18 años, 11 meses
Puntos: 0
GatorV: esa solución parche no me ayuda porque el valor de la variable de sesión se pierde igual al hacer la autentificación, a menos que no haya sido eso lo que me querías sugerir.

Cluster: en realidad esa era mi idea desde un principio pero mi jefe me dijo que meter usuario y contraseña al inicio era muy lento y quería que sólo algunas páginas del sistema tuvieran contraseña. Ahora no sé si hacerle caso a él o a ti . Tengo entendido que cosas como php-nuke permiten esa función y en muchos foros existen páginas restringidas y otras de acceso libre, si quisiera no poner usuario y contraseña al principio de mi sistema ¿conoces alguna otra solución a este problema?, me refiero a otro código o algún sistema como php-nuke.

gracias.

atte.

w.
  #7 (permalink)  
Antiguo 04/10/2006, 10:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
La variable de sesion no tiene porque perderse si usas el mismo session_name que el autentificador. Saludos
  #8 (permalink)  
Antiguo 04/10/2006, 10:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Cluster: en realidad esa era mi idea desde un principio pero mi jefe me dijo que meter usuario y contraseña al inicio era muy lento y quería que sólo algunas páginas del sistema tuvieran contraseña. Ahora no sé si hacerle caso a él o a ti . Tengo entendido que cosas como php-nuke permiten esa función y en muchos foros existen páginas restringidas y otras de acceso libre, si quisiera no poner usuario y contraseña al principio de mi sistema ¿conoces alguna otra solución a este problema?, me refiero a otro código o algún sistema como php-nuke.
Tendrías que rediseñar "Autentificator" .. lo cual no es su filosofía.

Basate en lo que puedas haber aprendido sobre el uso de sesiones y aplicalo en tu caso concreto.

En este caso se trata de que tu siempre incias una sesión (sea una página autentificada o no) .. Implementas el "login" con la autentificación y si la pasa creas tus variables de sesión para identificar al usuario las cuales validaras en esas páginas o procesos restringidos. Al ya tener disponible una "sesión" en curso, perfectamente puedes ir añadiendo en dicha sesión las variables que necesites para salvar el proceso de login donde hay "recargas" de página o redireccionamientos necesarios.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 04/10/2006, 11:01
wdc
 
Fecha de Ingreso: mayo-2005
Mensajes: 25
Antigüedad: 18 años, 11 meses
Puntos: 0
Cita:
Iniciado por GatorV Ver Mensaje
La variable de sesion no tiene porque perderse si usas el mismo session_name que el autentificador. Saludos
entonces quizás hay algo que yo no sepa porque cuando aunque la variable queda correctamente registrada en la sesión al pasar el cuadro de usuario y contraseña llega vacía a la otra página, de la misma forma si ingreso un nombre de usuario o contraseña equivocado se borra al instante. ¿debería hacer algo especial aparte de enviarla y recibirla?.

Gracias.

atte.

w.
  #10 (permalink)  
Antiguo 04/10/2006, 11:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Cluster: en realidad esa era mi idea desde un principio pero mi jefe me dijo que meter usuario y contraseña al inicio era muy lento y quería que sólo algunas páginas del sistema tuvieran contraseña
Yo tuve el mismo problema donde trabajo. Al final les puse sobre la mesa los beneficios de tener controlado al usario y de que estamos creando una "Intranet" (en mi caso) donde no hay zonas "públicas" (me refiero a personal no de la empresa .. aunque una vez "dentro" del sistema si que hay zonas que entra todo "nivel" de usuario y otras que no) .. todo el que entra debe autenficarse, según el "perfil" del usuario ya valido otras áreas de la aplicación si corresponde. El "login" lo hacen una vez y la sesión (tiempo de vida) en mi caso no es "corto" (son minutos) así que si realmente usan el sistema "habitualmente" .. practicamente la mayoría de usuarios continuan con la misma sesión en curso desde el inicio de su día laboral hasta su fin.

No sé que condiciones tienes tu concretas ..pero es cosa de "sacar" lo bueno y exponerlo claro a tu "jefe". Sino, .. realmente no sé que sentido tiene autentificar usuarios y registrarlos usando sesiones, donde la "gracia" de esto es NO tener que hacer una consulta SQL por ejemplo a tu BBDD más para ver si el script/proceso/página que se ha de ejecutar "segura" está bajo un usuario autenficado o no. Para eso haces un "if()" y listo .. pides una contraseña/usuario -> la validas ahí mismo -> haces el proceso (normalmente supongo que en tu caso en un proceso sólo .. no que involucre más paginas/scripts? y listo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 04/10/2006 a las 11:27
  #11 (permalink)  
Antiguo 04/10/2006, 18:18
wdc
 
Fecha de Ingreso: mayo-2005
Mensajes: 25
Antigüedad: 18 años, 11 meses
Puntos: 0
ok, al final estoy usando este código:

hachettp://3w.webestilo.com/php/php11a.phtml

(no pude ponerla en code, debo tener 30 mensajes)

no es rocket science pero funciona como necesito, lo único extraño es que sólo al cerra la ventana del navegador cierro la sesión, probñe con session_start() session_destroy() y aún así sigo "logueado", hay algún modo infalible de poner un link que me desloguee cuando uso esta forma de autenticación?

gracias.

atte.

w.
  #12 (permalink)  
Antiguo 04/10/2006, 19:15
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años
Puntos: 0
Para destruir una session yo uso lo siguiente
session_name("nombre_session");//El mismo nombre con el que la creo
session_start();//Accedo a la session
session_destroy();

Con esto no tiene porque quedarte logueado, revisa bien lo del session_name.

Sino otra forma, es que al hacer el logout setees las variables que comprueban que estas logueado a null, ejemplo:

$_SESSION['esta_logueado']=0;

Eso es todo.
Saludos.
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #13 (permalink)  
Antiguo 06/10/2006, 06:54
wdc
 
Fecha de Ingreso: mayo-2005
Mensajes: 25
Antigüedad: 18 años, 11 meses
Puntos: 0
ok, gracias voy a chequearlo pronto.

atte.

w.
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 23:37.