Foros del Web » Programando para Internet » PHP »

Problemas con las sessiones

Estas en el tema de Problemas con las sessiones en el foro de PHP en Foros del Web. Hola a todos. Les cuento mi problema: tengo una página (formulario) donde el usuario debe introducir su login y su password. Dicho formulario va a ...
  #1 (permalink)  
Antiguo 11/08/2006, 07:56
 
Fecha de Ingreso: agosto-2006
Mensajes: 5
Antigüedad: 11 años, 4 meses
Puntos: 0
Problemas con las sessiones

Hola a todos. Les cuento mi problema: tengo una página (formulario) donde el usuario debe introducir su login y su password. Dicho formulario va a parar a un archivo php que verifica que el usuario y la contraseña son válidos. En caso afirmativo, abro sesión así:

$user = $_POST[usuario];
session_start();
session_register("autentificado");
$autentificado = "si";
header("Location:mipagina.php?usuario=$user");
exit;

Ahora bien. Tengo en mi mipagina.php un include al principio (seguridad.php) que debería comprobar que el usuario que se conecta a mipagina.php ha sido identificado. El script de seguridad.php es el siguiente:

<?
if($_SESSION["autentificado"] != "si"){
header("Location:inicio.html");
exit;
}
?>

De forma que, si el usuario no se habia identificado, lo mando al inicio. Y si lo había hecho, no hago absolutamente nada (se muestra mipagina.php con un saludo al usuario, por eso le paso el usuario por GET en el archivo de identificación).

Pues... no me funciona!! ¿Porqué?

Ya sé que si en seguridad.php añado al principio session_start(); funciona, pues se abre una sesión en cada una de las páginas que se visitan, pero esto me accarrea un problema, puesto que escribiendo una dirección en el navegador con un usuario válido que lo lleve directamente a mipagina.php es posible entrar en el contenido de mipagina.php sin haberse identificado.

Ayuda por favooooor... Graciasssss
  #2 (permalink)  
Antiguo 11/08/2006, 08:37
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 13 años, 8 meses
Puntos: 11
Cambia tu sistema de autentificacion

te aconsejo que mejor utilices un sistema de autentificacion basado en datos de usuario en una base de datos.

Empiece echandole un vistazo e esto.

PD: consulta las FAQs de PHP tambien.

saludo.
__________________
http://dev.wsnetcorp.com
  #3 (permalink)  
Antiguo 11/08/2006, 09:01
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 14 años
Puntos: 4
Hola ocapgt

Según entiendo en tu penultimo párrafo dices que pueden entrar lo mismo sin loguearse.

Te muestro como lo hago yo y no me causa problemas

<?php
//--login.php
session_start();

//-- armo mi sentencia SQL para buscar en mi BdD o lo que sea que haces para comprobar tu usuario

$sSQL = "SELECT usu_id FROM usuarios WHERE usu_nombre=$_POST[usu_nombre] AND usu_clave=$_POST[usu_clave]";

//-- Validas que exista el usuario y asi obtienes el ID del usuario y aqui lo obtengo dentro de una variable $usu_id
//-- OBS.: redireccionar es una funcion que me redirecciona con javascript porque a veces mi header(Location) es medio molesto para usar

if ($usu_id != "")
{
$_SESSION['ID'] = $usu_id;
redireccionar("pagina_bienvenida.php");
}
else
{
redireccionar("loguearse.htm");
}


?>

<?php
//-- inicio con session_start();
session_start();

if (!isset($_SESSION['ID']))
{
redireccionar("loguearse.htm");
}

?>
  #4 (permalink)  
Antiguo 11/08/2006, 09:04
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 11 años, 10 meses
Puntos: 3
Tu codigo esta mal... por q solo creas una session con el nombre de"autentificado"....lo que intentaste hacer es:
Código PHP:

$_SESSION
[autentificado]="si"
Por cierto, para q las sessiones te funcionen en todas las paginas.. tienes que poner forzosamente "session_start()"
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
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 21:20.