Foros del Web » Programando para Internet » PHP »

Problemas de login/out en el autentificator de Cluster

Estas en el tema de Problemas de login/out en el autentificator de Cluster en el foro de PHP en Foros del Web. Hola Estoy usando el autentificator de Cluster pero me surge un problema. Siendo que en mi ordenador local con PHP instalado como módulo de Apache, ...
  #1 (permalink)  
Antiguo 05/08/2003, 08:40
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Problemas de login/out en el autentificator de Cluster

Hola
Estoy usando el autentificator de Cluster pero me surge un problema. Siendo que en mi ordenador local con PHP instalado como módulo de Apache, me funciona perfectamente, pero lo subo a mi server con php como CGI y no funciona el login/out:
- Al hacer login y pulsar el botón del formulario, no hace nada, se queda como cargando una pagina pero no hace nada. Si doy a parar y recargo la pagina sí estoy logueado.
- Me es imposible hacer un logout. A pesar de que en este caso sí carga la página, no hace el logout.
Me sucece con cualquier navegador, con cookies activadas... y como dije, en modo local si que funciona como yo quiero.
Decir que hice algunas modificaciones al script original para adaptarlo a mis necesidades, pero dichas modificaciones creo que no interfieren para nada, lo principal no lo he tocado.
Éste es el phpinfo() del server donde no me funciona:
www.mundodivx.com/info.php
¿Qué será?
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #2 (permalink)  
Antiguo 05/08/2003, 08:49
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
A Riegos de hacer un diagnóstico apresurado, me puedo jugar a que el problema reside a que estás utilizando un Server IIS con PHP CGI, que si, es la mejor configuración, pero SIEMPRE tuve problemas con cookies y Headers con esa configuración. Una de las reglas que me acostumbré a tomar cuando trabajo en esos servidores, es que en vez de utilizar Header("Location: "); es más conveniente utilizar Header("Redirect");

Espero que ese consejo te sirva.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #3 (permalink)  
Antiguo 05/08/2003, 09:00
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Gracias Webstudio pero no funciona. Con "Redirect" ni siquiera recarga la página en el logout, es como si el navegador no reconociera dicho header (no va en ninguno).
Cierto que IIS + PHP CGI no es lo mejor, pero es lo que tengo de momento hasta que mude a Apache...
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #4 (permalink)  
Antiguo 05/08/2003, 11:04
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Para que vean a lo que me refiero:
http://www.mundodivx.com/subtitulos/intercambio.php
Traten de loguearse con estos datos:

Usuario: Forosdelweb
Password: Forosdelweb

Si introducen usuario y password correctos, verán que no hace nada... pero si refrescan la pagina ¡están logueados! Y si luego dan al link de cerrar sesión, verán que no se desloguea...

Sin embargo he observado que el tratamiento de errores lo hace bien (ej. si ponemos la contraseña mal).
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #5 (permalink)  
Antiguo 05/08/2003, 11:19
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Revisaste como es el Header Redirect Correcto ?
Porque si mal no recuerdo, es algo asi :

header("Redirect: 0, url=http://www.fdw.com");

o algo asi...
no es solo reemplazar el "location" por "redirect".

Saludos.
PD : lo aclaro porque a mi me pasó también
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #6 (permalink)  
Antiguo 05/08/2003, 11:37
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Cierto, yo también piqué

Pero tampoco ha funcionado con la nueva forma creo que habrá que esperar que Cluster aparezca por el foro
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #7 (permalink)  
Antiguo 05/08/2003, 14:05
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

¿No sera 'Refresh' en lugar de 'Redirect'? Porque me suena de alguna vez que lei el codigo de los phpBB (que vago soy, podira buscarlo ¿verdad?).

Despues de un minuto de busqueda, he encontrado esto:
Código PHP:
$header_location = ( @preg_match('/Microsoft|WebSTAR|Xitami/'getenv('SERVER_SOFTWARE')) ) ? 'Refresh: 0; URL=' 'Location: ';

// y lo usa asi

header($header_location append_sid("index.$phpEx"true)); 
Asi que podira ser esto.

Lo que a mi me extraña es que se supone que la cabecera Location es estandard de HTTP, asi que cualquier servidor web deberia entenderla. Tambien es cierto que creo que el estandard dice que debe usarse la URL absoluta (http://...).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 05/08/2003, 14:11
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Yo creo que de la cabecera no es, ya que siempre me ha ido bien el Location en otras aplicaciones en el mismo server. Seguramente será de las sesiones y/o el caché...
Espero a Cluster
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #9 (permalink)  
Antiguo 05/08/2003, 14:21
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Por cierto, ¿no tiene en la documentacion un email a donde mandarle los bugs? Creo que si. Seria mas rapido que esperar a que pase por aqui.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 05/08/2003, 14:29
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Josemi, claro que si uno espera que los Webservers funcionen como deberian... cualquier Location deberia funcionar

Pero me topé muchas veces con el problema del "location" en servidores IIS porque poseen un Bug que si seteás una Cookie y luego hacés un Location, o el Location Falla a veces o la cookie no se setea. Esas cosas que suelen suceder en Redmond.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #11 (permalink)  
Antiguo 05/08/2003, 19:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. antetodo decir que no he testeado Autentificator bajo IIS con PHP en modo CGI...

El tema de las cabeceras de redireccionamiento no conocía esos "detallitos" de IIS (tomo nota) ..

Lo que es en Autentificator .. para el tema sesiones uso:

Código PHP:
session_cache_limiter('nocache,private'); 
Ahí le envio cabeceras de "no cachear" y página "privada" la página .. Justamente en tu código de tu página usas otras cabeceras HTTP para casi lo mismo ..

Código PHP:
<meta http-equiv="Expires" content="Tue, 01 Jan 1980 1:00:00 GMT">
<
meta http-equiv="Pragma" content="no-cache"
En alguna ocasión he leido algo sobre las cabeceras lanzadas con session_cache_limiter() que pueden dar problemas o "incompatibilidades" con ciertos navegadores y/o servidores HTTP ..

No te puedo decir más que pruebes a quitar esa llamada a session_cache_limiter() en principio .. (y las tuyas <meta> también ..) para ir "probando" ..

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 06/08/2003, 02:26
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Buenas de nuevo

El problema del login parece solucionado. No así el del logout.

Para solucionar el problema del login, quité la linea que me dijo Cluster:
Código PHP:
session_cache_limiter('nocache,private'); 
Pero no funcionó. Además de quitar esa línea tuve que cambiar:
Código PHP:
// 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; 
Por esto
Código PHP:
// Hacemos una llamada a si mismo (scritp) para que queden disponibles
// las variables de session en el array asociado $HTTP_...
// intercambio.php es la única página donde uso el autentificator
header("Location: intercambio.php");
exit; 
Y con eso se solucionó el login (pueden probarlo si no me creen )

He intentado hacer algo parecido con el logout pero no funciona:
Código PHP:
// Cargamos variables
require ("aut_config.inc.php");
// le damos un mobre a la sesion (por si quisieramos identificarla)
session_name($usuarios_sesion);
// iniciamos sesiones
session_start();
// destruimos la session de usuarios.
session_destroy();
header("Location: ../intercambio.php"); 
El Location lo hace bien, pero no borra la sesión Y en mi ordenador funciona bien

Voy a seguir probando, si a alguien se le ocurre algo que lo diga

<editado>
He observado que no hace falta quitar la linea que me dijo Cluster, con hacer el cambio que puse antes es suficiente (pero sigo con el problema en el logout)
</editado>
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.

Última edición por ferny; 06/08/2003 a las 06:48
  #13 (permalink)  
Antiguo 06/08/2003, 08:02
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Decir que ya lo solucioné por "fuerza bruta"

El problema era que no hace el session_destroy(); por lo que no se destruia la sesión y no salía del script... así que tuve que tomar otro camino:

Al hacer login, defino una nueva variable de sesión:
Código PHP:
//definimos usuario_logueado verdadero si el usuario se loguea
$_SESSION['usuario_logueado']=true
Luego en mi script tengo para verificación:
Código PHP:
$nivel_acceso = array(1,2);
if (!
in_array($_SESSION['usuario_nivel'] , $nivel_acceso) || !$_SESSION['usuario_logueado'] ) {
// mostramos los contenidos no accesibles
} else {
// mostramos los contenidos accesibles

Y al hacer el logout, dado que no coge el session_destroy(); lo que hago es cambiar la variable nueva:
Código PHP:
// Cargamos variables
require ("aut_config.inc.php");
// le damos un mobre a la sesion (por si quisieramos identificarla)
session_name($usuarios_sesion);
// iniciamos sesiones
session_start();
// deslogueamos
$_SESSION['usuario_logueado']=false;
header("Location: ../intercambio.php"); 
Notar que en el logout no puse session_destroy() ya que si lo pusiera, luego no funciona el script (no desloguea) pero así sí funciona.

Ahora mis preguntas son: ¿sería esta la mejor solución? ¿Es grave no hacer el session_destroy()?

Gracias
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.

Última edición por ferny; 06/08/2003 a las 08:12
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 04:24.