Foros del Web » Programando para Internet » PHP »

Sobre Autentificator de Cluster...

Estas en el tema de Sobre Autentificator de Cluster... en el foro de PHP en Foros del Web. Hola, soy nuevo en esto de PHP así como también en estos foros; Descargué la aplicación Autentifcator de Cluster y en principio me funcionó perfectamente. ...
  #1 (permalink)  
Antiguo 28/03/2006, 19:16
ASL
 
Fecha de Ingreso: marzo-2006
Mensajes: 10
Antigüedad: 18 años, 7 meses
Puntos: 0
Sonrisa Sobre Autentificator de Cluster...

Hola, soy nuevo en esto de PHP así como también en estos foros;

Descargué la aplicación Autentifcator de Cluster y en principio me funcionó perfectamente.

En mi sitio tengo un botón "Acceso a clientes" en todas las páginas, que al hacer clic va a mi versión de la página de login (la que seríala página index.php de ejemplo del Autentificator) donde se muestra los cuadros de nombre de usuario y contraseña para acceder a material restringido.

En esta página, al ingresar datos y darle a "Entrar" se redirecciona a un script intermedio llamado "restringido.php" con un código como el siguiente:

<?
require("aut_verifica.inc.php");

// Segun que Cliente sea lo mando a su versión del material restringido.
if ($_SESSION['usuario_login'] == 'Cliente1' ){
header ("Location: Dirección Cliente1");
}
else if ($_SESSION['usuario_login'] == 'Cliente2' ){
header ("Location: Dirección Cliente2");
}
else{header ("Location: $redir?error_login=5");}
exit;
?>

El problema es que yo quiero que si un usuario ya inicio sesión, al hacer clic en "Acceso a clientes" se le mande al material restringido directamente y no a la página de login. Solamente quiero que aparesca la página de login si el visitante no se a autenticado todabía.
Lo que traté de hacer es simplemente poner al principio de la página de login un código como el siguiente:

<?
session_start();
// Si esta iniciada una sesión lo mando a restringido.php para que lo mande a
// al material restringio correspondiente a este susario
// sino, lo que sigue al script es la página de login.
if (isset($_SESSION['usuario_login']) && isset($_SESSION ['usuario_password'])){
header ("Location: dirección_web/restringido.php");
}
<?
-Abajo esta el html de la página de login.

Esto no me funciona, nunca se entra en el "if" y no se porqué.
Quería saber si alguien me pude dar una mano.
Desde ya muchas gracias.
Saludos.

Última edición por ASL; 28/03/2006 a las 21:43
  #2 (permalink)  
Antiguo 29/03/2006, 15:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Esto no me funciona, nunca se entra en el "if" y no se porqué
Bueno . .Autentificator gestiona el nombre de la sesión personalizado .. es decir, usa la función "session_name()" para darle un nombre (en el código de aut_verifica.inc.php lo puedes ver) .. Esas "cabeceras" sobre sesiones han de ser iguales en todo uso de tus própios scritps que usen sesiones.

Cuando usas "Autentificator" .. le das un nombre de sesión, pero cuando NO defines un nombre de sesión (vía session_name()) el nombre de la sesión que se crea es el que PHP dá por defecto (según php.ini) .. Por ende "creas" dos sesiones independientes y pretendes acceder a los datos de ambas.

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 30/03/2006, 07:43
ASL
 
Fecha de Ingreso: marzo-2006
Mensajes: 10
Antigüedad: 18 años, 7 meses
Puntos: 0
Sonrisa

Gracias por responder,
Entonces para soluionarlo, tengo que poner antes de 'session_start()' la instrucción 'session_name($usuarios_sesion);' para que retome la sesión $usuarios_sesion, o ¿con eso no me alcanza? (Ya se que primero debería probar y despues preguntar, pero quiero que me quede claro esto primero.)

De cualquier manera, yo lo solucioné (aparentemente) haciendo que se ejecute el script intermedio al tratar de ingresar a la pagina de login, y cuando se insertan datos y se manda el formulario en la página de login para ingresar a contenido restringido. De esta manera, siempre se ejecuta el script aut_verifica.inc.php a partir de el script intermedio, redireccionando a la página de login o a contenido restringido según convenga.

O sea, lo que hice fue:

//Script Intermedio:
<? require("aut_verifica.inc.php");

if ($_SESSION['usuario_login'] == 'Usuario1' ){
header ("Location: URL/cliente1.php");
} else if ($_SESSION['usuario_login'] == 'Usuario2' ){
header ("Location:URL/cliente2.php");
}
?>


//Al Inicio de Login.php
<? if (isset($_SESSION['usuario_login']) && isset($_SESSION['usuario_password'])){
if ($_SESSION['usuario_login'] == 'Usuario1' ){
header ("Location: URL/cliente1.php");
} else if ($_SESSION['usuario_login'] == 'Usuario2' ){
header ("Location: URL/cliente2.php");
}
}
?>

// Y los cambios a aut_verifica.inc.php fueron:

// chequear si se llama directo al script.
if ($_SERVER['HTTP_REFERER'] == ""){
//die ("Error cod.:1 - Acceso incorrecto!");
Header ("Location: URL/login.php");
exit;
}

// Y también al final del todo:
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!");
Header ("Location: URL/login.php");
exit;
}
}
?>
Haciendo esto, ahora me funciona todo perfectamente.
No se si lo que hice esta mal en algun aspecto; te agradecería que me comentaras al respecto.

Muchas Gracias de nuevo.
Saludos.

Última edición por ASL; 30/03/2006 a las 07:59
  #4 (permalink)  
Antiguo 30/03/2006, 08:19
Avatar de keroveros  
Fecha de Ingreso: febrero-2006
Mensajes: 55
Antigüedad: 18 años, 9 meses
Puntos: 0
A lo mejor al escribir esto me pego contra un muro, porque no estoy demasiado seguro, pero puede que no te entrara en el 'if', aparte de que te faltaba lo de las sesiones, por el tema de parentesis. La funcion isset "creo" que debe estar totalmente entre parentesis.

Tu pusiste esto:

if (!isset($_SESSION['usuario_login']) && !isset($_SESSION['usuario_password']))

Mientras que la forma correcta "creo" que debe ser esta:

if (!(isset($_SESSION['usuario_login'])) && !(isset($_SESSION['usuario_password'])))


Si eso no es asi, en mas de una ocasion no me ha funcionado un isset, y con eso se ha arreglado.

Espero que te sirva, y no haber posteado ninguna barbaridad.

Salu2!
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 22:18.