Foros del Web » Programando para Internet » PHP »

problemas con sesiones

Estas en el tema de problemas con sesiones en el foro de PHP en Foros del Web. Buenas ¿como andamos? , tengo un problemilla con las sesiones que no consigo resolver, el tema es que creo una variable de sesión pero luego ...
  #1 (permalink)  
Antiguo 06/05/2009, 04:22
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
problemas con sesiones

Buenas ¿como andamos? , tengo un problemilla con las sesiones que no consigo resolver, el tema es que creo una variable de sesión pero luego la quiero mostrar con echo y está vacía, además quiero cambiar de página y que la sesión siga viva y dicha variable con el valor que le asigno en la primera página.
Nota:Previamente antes de postear aquí , hice un var_dump($_POST) para comprobar que llegaban correctamente los valores del form (que si llegan). Por si acaso aclarar también que en la página 1 lo que hace es comprobar que el user está registrado y sino no le deja entrar, habiendo hecho esta comprobación y estando registrado la página se muestra entera, pero la variable de sesión por algún motivo que desconozco no se llena.

Página 1:

Código:
<?php
session_start(); 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>cosas para comer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-5" />
</head>

<body>
<? 

include("fns/db_fns.php");
include("fns/functions.php");

 include("fns/oasisgoldbird_fns.php"); 
//var_dump($_POST);

//Solo le dejamos pasar si es usuario autorizado o ha iniciado sesion antes
if (!$_SESSION['autt'] ) {

if (!login($_POST['email'],$_POST['pwd']) ) {
echo "<p> Usted no tiene acceso </p>";
exit;
//Si existe 
$_SESSION['autt']=$_POST['email'];
} }

echo "<p class='white'>usuario: ".$_SESSION['autt']."</p>";
echo "<p class='white'><a href='pagina2.php'>Página2</a></p>";

?>
pagina2.php
Código:
<?php
session_start(); 
echo $_SESSION['autt'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>pino puente</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-5" />
</head>
<body>
<? 

include("fns/db_fns.php");
include("fns/functions.php");

 include("fns/oasisgoldbird_fns.php"); 
//var_dump($_POST);

//Solo le dejamos pasar si es usuario autorizado o ha iniciado sesion antes
if (!$_SESSION['autt'] ) {
echo "<p align='center' > Acceso denegado </p>"; 
exit;
} 
?>
Las sesiones son un tema que desde que empecé con php siempre me han dado muchos quebraderos de cabeza jeejje, no se lo que hago mal porque pongo el sesion_start inmeditamente despúes de la etiqueta <?php sin dejar espacio y antes que el resto de la cabecera , luego igualo una variable de sesión al estilo PHP5 , por cierto uso php5 que no lo había dicho. Lo he probado tanto en local como en internet y no me funciona
Un saludo y gracias de antemano.
  #2 (permalink)  
Antiguo 06/05/2009, 04:59
Usuario no validado
 
Fecha de Ingreso: octubre-2008
Ubicación: BRUSELAS
Mensajes: 211
Antigüedad: 15 años, 5 meses
Puntos: 3
Respuesta: problemas con sesiones

alomejor es una tonteria pero en vez de poner
"<?"

pon

"<?php"
  #3 (permalink)  
Antiguo 06/05/2009, 05:03
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: problemas con sesiones

Buenas

Sé que el session_start() supuestamente tiene que ir e inicializar todas las sesiones, pero yo he tenido problemas también algunas veces. Así que iba sesión por sesión en vez de todas a la vez. Prueba a poner session_register('nombre_session'); por cada session, en vez del session_start();

Es decir, en tu caso sería:

Página 1
Código PHP:
<?php
session_register
('autt');
?>
// ETC ETC ETC...
Página 2
Código PHP:
<?php
session_register
('autt');
echo 
$_SESSION['autt'];
?>
// ETC ETC ETC...
No sé si funcionará pero en mi caso alguna vez me ha arreglado quebraderos de cabeza con sesiones.

Saludos y suerte
  #4 (permalink)  
Antiguo 06/05/2009, 05:12
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: problemas con sesiones

Cita:
Iniciado por Kamae Ver Mensaje
Buenas
Prueba a poner session_register('nombre_session'); por cada session, en vez del session_start();
Buenas gracias por la ayuda , pero lo primero no tiene nada que ver ,es indistinto que abras php con <? que con <?php , lo segundo no tiene nada que ver session_register('nombre_session'); con session_start(); (almenos esoc creo ,si estoy equivocado que alguien lo diga please), digo que no tiene nada que ver porque el primero lo que hace (repito sino me equivoco) es registrar una variable (con php5 se hace $_SESSION['NOMBRE']="VALOR") y el segundo iniciar o continuar la sesión existente, por ello ninguno de los dos soluciona mi problema.
Un saludo y gracias.
  #5 (permalink)  
Antiguo 06/05/2009, 05:41
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: problemas con sesiones

Buenas!

Yo estoy 99.99% seguro que sí tiene que ver session_register con session_start xD

Supongamos que tienes 3 sessiones: usuario, tipoUsuario, y fecha.
Con un session_start(); te inicia o continua las sessiones existentes, todas.
Con session_register('nombre_de_la_session'); hace lo mismo que el session_start pero sólo inicializa una en concreto.
Independientemente de cuál de las 2 formas uses, luego deberás hacer el $_SESSION['nombre']="VALOR" igualmente.

Por lo tanto estos 2 códigos harían lo mismo:

Código PHP:
session_start(); 
Código PHP:
session_register('usuario');
session_register('tipoUsuario');
session_register('fecha'); 

Dicho esto, repito, no creo que sea la solución, pero yo recuerdo que nunca uso session_start(); porque hubo un día que tuve problemas y con session_register lo solucioné. No sé, ya te digo, no creo que sea la solución, pero podría serlo. Sólo tienes que cambiar 2 líneas y probarlo, no pierdes nada.. Si no funciona estarás igual, pero si funciona todo eso que ganas ;)

Saludos y suerte!
  #6 (permalink)  
Antiguo 06/05/2009, 06:37
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: problemas con sesiones

Cita:
Iniciado por Kamae Ver Mensaje
Buenas!

Yo estoy 99.99% seguro que sí tiene que ver session_register con session_start
Ok ,tendrás razón seguramente , pero siempre había entendido que con session_start(); inicias sesión o la continúas y con session_register lo que haces es registrar una variable , según yo pensaba tu puedes tener 1 sesión y dentro de esta mucha variables o solo una , pero no una sesión por variable, seguramente yo estaba equivocado y según lo que creo que te entiendo cada variable es una sesión ¿no?.
De todas formas no funciona, no se cual puede ser el problema, despúes de tanto tiempo con php que me pasen estas cosas es un poco frustrante jejeje, pero bueno haber si de una vez entiendo mi error con las sesiones que seguro que lo tengo.
Un saludo y gracias.
  #7 (permalink)  
Antiguo 06/05/2009, 07:09
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años
Puntos: 19
Respuesta: problemas con sesiones

con session start() inicias una sesion si no esta creada y si ya esta creada retoma todos los valores de esa sesion.
  #8 (permalink)  
Antiguo 06/05/2009, 07:20
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: problemas con sesiones

Cita:
Iniciado por By_George Ver Mensaje
con session start() inicias una sesion si no esta creada y si ya esta creada retoma todos los valores de esa sesion.
Entonces eso es exactamente lo que yo decía .
Cita:
Ok ,tendrás razón seguramente , pero siempre había entendido que con session_start(); inicias sesión o la continúas y con session_register lo que haces es registrar una variable
Un saludo
  #9 (permalink)  
Antiguo 07/05/2009, 05:24
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: problemas con sesiones

Buenas

Pues sólo se me ocurren 2 cosas más:

Una, que compruebes la configuración del php.ini y verifiques que las sessiones están bien configuradas, comprueba que existan los directorios, etc. ("Edición / Buscar" por "session" e irás encontrando opciones interesantes...). Por ejemplo:

Código PHP:
session.save_path "C:/php-5.2.5-Win32/sessions"
session.use_cookies 1
// etc etc etc 
Si todo está bien, entonces yo iría haciendo "echo" por todos lados comprobando que lo vaya haciendo todo bien. Cuando creas la session haz también un echo de "Creo session" y muestras su valor también. Cuando le metas un valor a la variable $_SESSION haz justo después otro echo... Ve marcando todos los lugares y a ver si encuentras alguna incongruencia o algo que delate el fallo.

Personalmente no sé que más decirte, mucha suerte y un saludo!
  #10 (permalink)  
Antiguo 07/05/2009, 06:19
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: problemas con sesiones

Gracias Kamae, algunas de esas pruebas ya la he hecho otras no por que he descartado el php.ini ya que no me funciona ni en local ni en internet (servidor compartido sin acceso al php.ini), de todas formas en ambos servers tengo muchas otras webs funcionando con sesiones perfectamente por lo que ya no se que hacer; revisaré el código paso a paso haber que pasa.
Una cosilla , ¿Como puede hacer un echo de la sesión ?, ¿se hace echo $_SESSION sin más ?.
Gracias
  #11 (permalink)  
Antiguo 08/05/2009, 00:24
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: problemas con sesiones

Sí pero entre corchetes le pasas el nombre de la session:

Código PHP:
echo $_SESSION['nombre']; 
Es curioso.. No sé yo iría haciendo eso, cada vez que juegues con alguna variable "session" o "post", hacer seguidamente un "echo" para comprobar paso a paso que todo está yendo bien. Por algún lugar petará.. :P

Saludos!
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 14:13.