Foros del Web » Programando para Internet » PHP »

problema con sesiones

Estas en el tema de problema con sesiones en el foro de PHP en Foros del Web. Amigos: tengo un problema que seguro es una pavada, pero no logro descifrarlo: tengo una página con un formulario, y con una sesión, puesto que ...
  #1 (permalink)  
Antiguo 06/01/2011, 08:13
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
problema con sesiones

Amigos: tengo un problema que seguro es una pavada, pero no logro descifrarlo:
tengo una página con un formulario, y con una sesión, puesto que en la misma puede (o no) estar logueado el usuario.
El tema es que cuando completo este formulario, en la página que resuelve, no llegan las variables después del session start.
Es decir, tengo antes que nada <?php session_start(); ?> y luego todo el código, y cuando quiero imprimri las variables, estas están vacías. Ahora, si pongo echo $var; antes de <?php session_start(); ?>, si bien no funciona la sesión porque "headers already sent" sí me imprime la variable. Es como si al iniciar la sesión se borraran todos los contenidos.
¿qué puedo hacer?
gracias!
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #2 (permalink)  
Antiguo 06/01/2011, 08:50
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: problema con sesiones

Usa var_dump($_SESSION);
o var_dump($_POST); para ver que datos poseen.
__________________
I am Doyle please insert code.
  #3 (permalink)  
Antiguo 06/01/2011, 09:27
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: problema con sesiones

Doylelives: gracias por el dato. Efectivamente, me indica que las variables son "NULL" (aunque sí pasa otras variables)... alguna otra idea?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #4 (permalink)  
Antiguo 06/01/2011, 09:29
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: problema con sesiones

Que variables no llegan las del formulario o las de sesion?
__________________
I am Doyle please insert code.
  #5 (permalink)  
Antiguo 06/01/2011, 09:41
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: problema con sesiones

Mirá, tengo este formulario:

Código:
<form action="reserva.php" name="formulario" method="post" enctype="multipart/form-data">
<input type="hidden" name="id_unidad" value="<?php echo $id_unidad; ?>" />
<input type="hidden" name="id_propiedad" value="<?php echo $id_propiedad; ?>" />
<table width="511" border="1">
  <tr>
    <td width="226">Fecha desde</td>
    <td width="458"><input name="fecha_desde" id="fecha_desde" type="text" class="inputi"  value="<?php if ($fecha_desde=="") {echo $hoy;} else {echo $fecha_desde; }?>" /></td>
  </tr>
  <tr>
    <td>Fecha hasta</td>
    <td><input name="fecha_hasta" id="fecha_hasta" type="text" class="inputi" value="<?php if ($fecha_hasta=="") {?>AAAA-MM-DD<?php } else {echo $fecha_hasta; }?>" /></td>
  </tr>
  <tr>
    <td><input type="submit" name="Submit2" id="Submit" value="Reservar" /></td>
    <td>&nbsp;</td>
  </tr>
</table>
</form>
Y cuando hago echo del dump me dice:

array(5) { ["sesion"]=> &string(2) "SI" ["id_unidad"]=> &string(2) "10" ["id_cliente"]=> &string(2) "20" ["fecha_desde"]=> &NULL ["fecha_hasta"]=> &NULL }


previamente, me loguee pasando por un archivo, control.php, que tiene el siguiente código

Código:
$sql="SELECT * from pactemos_clientes
where user='$usuario' and pass='$contrasena'";

$result = mysql_query($sql, $conexion);

while ($row=mysql_fetch_array($result))
{
$id_cliente=$row['id'];
}	  

	
if ($id_cliente!="")
	{
	session_start();
	$_SESSION["sesion"]= "SI";
	$_SESSION["id_unidad"]= $id_unidad;	
	$_SESSION["id_cliente"]= $id_cliente;	
	$_SESSION["fecha_desde"]= $fecha_desde;	
	$_SESSION["fecha_hasta"]= $fecha_hasta;		
	
	header ("Location: $pagina.php");	
	}
	else 
	{ 
	$_SESSION["id_unidad"]= $id_unidad;	
	$_SESSION["fecha_desde"]= $fecha_desde;	
	$_SESSION["fecha_hasta"]= $fecha_hasta;		
	
	header ("Location: $pagina.php?errorusuario=si");	
		//si no existe le mando otra vez a la portada 
	} 
?>
¿Esto te da alguna pista más? Yo estoy perdidísimo.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #6 (permalink)  
Antiguo 06/01/2011, 09:45
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: problema con sesiones

A ver la instrucción session_start(); SIEMPRE debe ir al principio del codigo. en control.php veo que está dentro de un if...


Que valor posee $pagina.php?
__________________
I am Doyle please insert code.
  #7 (permalink)  
Antiguo 06/01/2011, 10:13
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: problema con sesiones

Entiendo lo que decís, pero en ese caso, se envía como header dentro del if, a la página en la te estás logueando, y queda arriba del todo.
Igualmente, el problema lo tengo en la página que no llama a esa instrucción, y que si pongo que imprima las variables fecha_desde y fecha_hasta antes de session start, existen, pero luego no.
para mí es todo un misterio, y estoy seguro de que es algo taaan sencillo que por eso no lo veo.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #8 (permalink)  
Antiguo 06/01/2011, 10:21
 
Fecha de Ingreso: enero-2009
Ubicación: Neiva, Huila
Mensajes: 196
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: problema con sesiones

compadre que problema te pones si solo la instruccion session_start(); la pones al inicio del script?
  #9 (permalink)  
Antiguo 06/01/2011, 10:23
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: problema con sesiones

Naciostars, disculpa pero no comprendo la sintaxis de tu respuesta.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #10 (permalink)  
Antiguo 06/01/2011, 10:32
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 14 años, 3 meses
Puntos: 9
Respuesta: problema con sesiones

<?php session_start(); ?>

<html>
<head></head>
...
.-..
...
..
..
..
.

tiene que ser antes de todo...osea al principio...o la primera wea de la pagina
  #11 (permalink)  
Antiguo 06/01/2011, 10:34
 
Fecha de Ingreso: enero-2009
Ubicación: Neiva, Huila
Mensajes: 196
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: problema con sesiones

sorry no se que me paso...lo que quiero decir es, cual fue la razon por la cual tomaste la determinacion de no poner el session_start(); como la primer linea de tu script =)
  #12 (permalink)  
Antiguo 06/01/2011, 10:37
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: problema con sesiones

Ah! No, no, me entendieron mal, en efecto, <?php session_start(); ?> es lo primero que aparece. En un momento le metí antes las variables para ver si de esta forma las imprimía, y sí, las imprime (pero ahí no arranca la sesión porque "headers already sent", pero cuando dejo el session_start al principio de todo, arranca, toma todas las otras variables y no tma las fechas: por esto decía que cuado hago una impresión del var dump, me devuelve esto:


array(5) { ["sesion"]=> &string(2) "SI" ["id_unidad"]=> &string(2) "10" ["id_cliente"]=> &string(2) "20" ["fecha_desde"]=> &NULL ["fecha_hasta"]=> &NULL }


¿ahora me explico mejor?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #13 (permalink)  
Antiguo 06/01/2011, 10:41
 
Fecha de Ingreso: enero-2009
Ubicación: Neiva, Huila
Mensajes: 196
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: problema con sesiones

ok entonces ahora si...=) el problema esta en el script?---en cual =) y te colaboramos =)
  #14 (permalink)  
Antiguo 06/01/2011, 10:49
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: problema con sesiones

Es que justamente, eso no lo sé. Vamos desde 0 para ver si me pueden ayudar:

Para hacer una reserva, hay que estar logueado. Pero como es probable que ya hayan buscado si había disponible entre fechas, yo pongo en unos campos ocultos, las fechas dela búsqueda para el log in.
entonces tengo esto:

Código:
			<form action="control.php" method="POST">
			<input type="hidden" name="pagina" value="reserva" />
			<input type="hidden" name="id_unidad" value="<?php echo $id_unidad; ?>" />
			<input type="hidden" name="id_propiedad" value="<?php echo $id_propiedad; ?>" />	
			<input type="hidden" name="fecha_desde" value="<?php echo $fecha_desde; ?>" />
			<input type="hidden" name="fecha_hasta" value="<?php echo $fecha_hasta; ?>" />
			
            <?php if ($sesion=="SI") {

?> 
<div style="height:25px; margin-top:8px;margin-left:50px;">
<a class="menucito" href="index.php">MIS DATOS</a>  -  <a class="menucito" href="index.php">MIS RESERVAS</a>  -  <a class="menucito" href="index.php">MIS MENSAJES</a>  -  <a class="menucito" href="index.php">SALIR</a>
</div>

<?php } else {?> 
			<table width="100%" border="0">
                <tr>
                  <td width="14%">Usuario</td>
                  <td width="29%"><input type="text" name="usuario" class="access" /></td>
                  <td width="12%">Pass:</td>
                  <td width="26%"><input type="password" name="contrasena" class="access"/></td>
                  <td width="19%"><input type="image" src="elementos/boton-entrar.jpg" alt="entrar" width="72" height="27" /></td>
                </tr>
              </table>	<?php } ?>		
			<input type="hidden" name="pagina" value="reserva"/>

			  </form>

el archio control.php, por donde se procesa el logueo, enviaría los encabezados con el session_start:

Código:
$sql="SELECT * from pactemos_clientes
where user='$usuario' and pass='$contrasena'";

$result = mysql_query($sql, $conexion);

while ($row=mysql_fetch_array($result))
{
$id_cliente=$row['id'];
}	  

	
if ($id_cliente!="")
	{
	session_start();
	$_SESSION["sesion"]= "SI";
	$_SESSION["id_unidad"]= $id_unidad;	
	$_SESSION["id_cliente"]= $id_cliente;	
	$_SESSION["fecha_desde"]= $fecha_desde;	
	$_SESSION["fecha_hasta"]= $fecha_hasta;		
	
	header ("Location: $pagina.php");	
	}
	else 
	{ 
	$_SESSION["id_unidad"]= $id_unidad;	
	$_SESSION["fecha_desde"]= $fecha_desde;	
	$_SESSION["fecha_hasta"]= $fecha_hasta;		
	
	header ("Location: $pagina.php?errorusuario=si");	
		//si no existe le mando otra vez a la portada 
	}
Si el loguin es correcto, devuelve a reserva.php, que ya tiene antes que nada el <?php session_start(); ?>

Pero si no había fecha_hasta y fecha_desde , las ponemos en un formulario


Código:
<form action="reserva.php" name="formulario" method="post" enctype="multipart/form-data">
<input type="hidden" name="id_unidad" value="<?php echo $id_unidad; ?>" />
<input type="hidden" name="id_propiedad" value="<?php echo $id_propiedad; ?>" />
<table width="511" border="1">
  <tr>
    <td width="226">Fecha desde</td>
    <td width="458"><input name="fecha_desde" id="fecha_desde" type="text" class="inputi"  value="<?php if ($fecha_desde=="") {echo $hoy;} else {echo $fecha_desde; }?>" /></td>
  </tr>
  <tr>
    <td>Fecha hasta</td>
    <td><input name="fecha_hasta" id="fecha_hasta" type="text" class="inputi" value="<?php if ($fecha_hasta=="") {?>AAAA-MM-DD<?php } else {echo $fecha_hasta; }?>" /></td>
  </tr>
  <tr>
    <td><input type="submit" name="Submit2" id="Submit" value="Reservar" /></td>
    <td>&nbsp;</td>
  </tr>
</table>
</form>

que si ya staba logueado, no me las pasa... ese es problema, me pasa todas las otras variables, pero no fecha_hasta y fecha_desde....


Gracias por el esfuerzo de todos por entenderme!
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #15 (permalink)  
Antiguo 06/01/2011, 11:16
 
Fecha de Ingreso: enero-2009
Ubicación: Neiva, Huila
Mensajes: 196
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: problema con sesiones

compañero veo que a los hidden les das el valor de la variable $fecha_hasta; donde toma esta variable el valor de la fecha.
  #16 (permalink)  
Antiguo 06/01/2011, 14:10
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: problema con sesiones

Si los hubiera, los toma de este formulario:

Código:
<form action="reserva.php" name="formulario" method="post" enctype="multipart/form-data">
<input type="hidden" name="id_unidad" value="<?php echo $id_unidad; ?>" />
<input type="hidden" name="id_propiedad" value="<?php echo $id_propiedad; ?>" />
<table width="511" border="1">
  <tr>
    <td width="226">Fecha desde</td>
    <td width="458"><input name="fecha_desde" id="fecha_desde" type="text" class="inputi"  value="<?php if ($fecha_desde=="") {echo $hoy;} else {echo $fecha_desde; }?>" /></td>
  </tr>
  <tr>
    <td>Fecha hasta</td>
    <td><input name="fecha_hasta" id="fecha_hasta" type="text" class="inputi" value="<?php if ($fecha_hasta=="") {?>AAAA-MM-DD<?php } else {echo $fecha_hasta; }?>" /></td>
  </tr>
  <tr>
    <td><input type="submit" name="Submit2" id="Submit" value="Reservar" /></td>
    <td>&nbsp;</td>
  </tr>
</table>
</form>

Tanto este formulario como el de login están en la misma página. Sirve para que si el usuario llenó este formulario pero no está logueado, al loguearse los parámetros estén en el formu de login y no se pierdan, y si ya está logueado cuando llega aquí, no pasa nada, porque opera desde el otro formulario en el que sí deberá completar los datos él mismo.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #17 (permalink)  
Antiguo 07/01/2011, 12:53
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: problema con sesiones

SOLUCIONADO!

Pasé las variables de esta manera:
<?php session_start();
$_SESSION['fecha_desde']=$_POST['fecha_desde'];
$_SESSION['fecha_hasta']=$_POST['fecha_hasta'];
$_SESSION['localidad']=$_POST['localidad'];
?>

y ahora funciona correctamente.


gracias a todos los que intentaron ayudarme.

saludos
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar

Etiquetas: sesiones
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:11.