Foros del Web » Programando para Internet » PHP »

sobre sesiones

Estas en el tema de sobre sesiones en el foro de PHP en Foros del Web. Holas El problemilla es el siguiente: tengo un pagina de ingreso en el cual creo y registro la sesion, luego lo redirecciono al la pagina ...
  #1 (permalink)  
Antiguo 30/04/2005, 15:02
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Pregunta sobre sesiones

Holas
El problemilla es el siguiente:

tengo un pagina de ingreso en el cual creo y registro la sesion, luego lo redirecciono al la pagina bienvenida, el problema surge pues me redireciona a la pagina ingreso., esto deveria suceder claro cuando no se ha logeado eso sucede siempre. pues en la pagina bienvenida verifico si inicio sesion o no y segun eso redirecciona la ingreso. alguan idea sobre que puede estar mal?

este es el codigo de la pagina ingreso:
if ($acceder == true) { // si el usuario y contraseña son correctos
nombre_sesion(); // funcion para nombrar sesion (session_name() )
iniciar_sesion(); // funcion para iniciar la sesion session_start()
registrar_sesion('usuario'); //funcion para registar en la sesion (session_register())
registrar_sesion('empresa'); //igual que el anterior
setcookie("ejemplo",id_sesion(),100);
header('location: bienvenida.php');
}

ahoa el codigo de bienvenida:

if (!comprobar_registro_sesion('usuario')) { //funcion para verificar si esta registrado la variable (session_is_registered())
header('location: ingresar.php');
}

bueno es un script sencillo pero que no me esta funcionando no se por que alguien me podria decir cua les mi error
  #2 (permalink)  
Antiguo 30/04/2005, 15:29
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Hola:
Funciones como session_register() y session_is_registered() es mejor ir dejándolas de lado. Desde PHP 4.1 es mejor y más seguro utilizar los arrays superglobales como $_SESSION
Código PHP:
if ($acceder == true) { // si el usuario y contraseña son correctos
    
nombre_sesion(); // funcion para nombrar sesion (session_name() )
    
iniciar_sesion(); // funcion para iniciar la sesion session_start()
    
$_SESSION['usuario'] = true//Mejor si pones el nombre en lugar de true
    
$_SESSION['empresa'] = true//igual que el anterior
    
setcookie("ejemplo",id_sesion(),100); // ¿Esta cookie para qué es?
    
header('location: bienvenida.php');

Y el código de bienvenida:
Código PHP:
if (empty($_SESSION['usuario'])) { //funcion para verificar si esta registrado la variable (session_is_registered())
    
header('location: ingresar.php');

Saludos
  #3 (permalink)  
Antiguo 30/04/2005, 15:42
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Hola jpinedo tienes razon con respecto a las funciones de sesion.
He probado lo que merecomendaste pero nada no vota ni error ni nada.

que podra ser, alguna otra opinion o sera por que lo estoy provando localmente osea que tengo instalado en mi amquin el triad? aunqueno creo mehubiese salido error
  #4 (permalink)  
Antiguo 30/04/2005, 15:45
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Hola

En la pagina de bienvenida tambien tienes que iniciar la sesion:

nombre_sesion(); // funcion para nombrar sesion (session_name() )
iniciar_sesion(); // funcion para iniciar la sesion session_start()
if (!comprobar_registro_sesion('usuario')) { //funcion para verificar si esta registrado la variable (session_is_registered())
header('location: ingresar.php');
}


De hecho es todas tus paginas donde quieras iniciar o leer de una session, debes correr esas funciones.
  #5 (permalink)  
Antiguo 30/04/2005, 15:49
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Cita:
Iniciado por gerson
(...)que podra ser, alguna otra opinion o sera por que lo estoy provando localmente osea que tengo instalado en mi amquin el triad? (...)
El triad? Te refieres al viejo PHP triad?. Bueno, creo que ese paquete ya no se actualiza desde antes de PHP 4.1. Aunque creo que hay un nuevo proyecto que lo resucita. Por favor da detalles de las versiones de tus programas (Apache, MySql y PHP).

Saludos
  #6 (permalink)  
Antiguo 30/04/2005, 15:54
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
phptriad

Yo uso justo ese mismo, con 4.1 y funciona perfecto, debe ser eso de que no inicializa las sessiones nuevamente, o bien, revisa que no estes bloqueando cookies en tu navegador donde estas haciendo las pruebas.

Suete!!
  #7 (permalink)  
Antiguo 30/04/2005, 15:56
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
jajajaja.
Es cierto... es posible que no hayas iniciado la sesión en la página de bienvenida, como bien apunta Neuron_376
Código PHP:
nombre_sesion();
iniciar_sesion();
if (empty(
$_SESSION['usuario'])) { //verificar si esta definida la variable
    
header('location: ingresar.php');

Saludos
  #8 (permalink)  
Antiguo 30/04/2005, 16:03
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Sí... creo que la última actualización fue hasta PHP 4.1.
Pero chicos.... creo que ya es hora de que vayan pensando en actualizar no?
Saludos
  #9 (permalink)  
Antiguo 30/04/2005, 16:04
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
bueno la version del apache es 1.3 de php 4.1.1 y de mysql 3.23.47 .

Lo que Nuetron 376 suguiere me qenera una duda, pues si inicio sesion entonces no habria la necesidad de que se logee no ? o estoy en un error...

ya me hice bolas bueno espero que puedan despejar esta dudilla
  #10 (permalink)  
Antiguo 30/04/2005, 16:10
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
pos sigue redireccionando que raro es mas me crea dos sesiones cosa que no debe ser o si?
  #11 (permalink)  
Antiguo 30/04/2005, 16:15
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Hummm

Ya revisaste lo de cookies, en tu navegador por algo como ACEPTAR TODAS LAS COOKIES para que asegures que no hay problema de cookies y revisalo nuevamente.

Pero rapido, antes de que me vuelvas a cambiar el nombre [Nuetron 376], jajajaaja, no es cierto, mira esto:

session_start() funciona asi...

Si no existe una session creada para entonces va a crear una nueva, y si existe te carga la informacion de la que ya esta creada.

Suerte!!
  #12 (permalink)  
Antiguo 30/04/2005, 17:30
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
sip sigue igual las cosas
  #13 (permalink)  
Antiguo 02/05/2005, 07:48
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
bueno como que no me esta saliendo lo que quiero pero bueno podrian decierme por que es necesario iniciar sesion "session_start()" cada ves que abro una pagina?
  #14 (permalink)  
Antiguo 02/05/2005, 09:24
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Hola

session_start() funciona asi...

Si no existe una session creada para entonces va a crear una nueva, y si existe te carga la informacion de la que ya esta creada. Entonces si una pagina no usas session_start() no se va a cargar la session existente.


Mira, en lugar de:

nombre_sesion();
iniciar_sesion();

Usa solo:

session_start();

Y pruebalo,
  #15 (permalink)  
Antiguo 02/05/2005, 15:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Una pregunta .. ¿donde está el código de esas funciones "inicia_sesion()" y demás ..?

es neceario que veamos por donde haces session_start() y sobre todo donde das nombre a la sesión (lo cual es completamente -opcional- .. pero si lo quieres usar no pasa nada más que tienes que tener cuidado en poner y definir el nombre de la sesión siempre antes de session_start() con su session_name("el_nombre"))

Otros detalles ..
¿como propagas el SID en tu aplicación? .. como lo hace PHP en su configuración?

PHP por defecto si usas: (php.ini)
session.use_cookies = ON
o mejor
session.only_cookies = ON

ya propaga el SID en cookies .. por ende no es necesario hacer:
setcookie("ejemplo",id_sesion(),100);
(definir esa cookie para propagar el ID de sesión ...) PHP ya lo hace por defecto. Sólo debes asegurarte que tu navegador de pruebas acepte dicha cookie que PHP va a generar y enviar al cliente, sino, el SID se pierde y con el tus variables de sesión.

Un saludo,
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 02:32.