Foros del Web » Programando para Internet » PHP »

Al hacer submit en un formulario pierdo la sesión

Estas en el tema de Al hacer submit en un formulario pierdo la sesión en el foro de PHP en Foros del Web. Hola amigos, tras un logado, meto en sesión al usuario y algunos datos más. El caso es que en otra página que tengo un formulario, ...
  #1 (permalink)  
Antiguo 25/02/2007, 05:55
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Al hacer submit en un formulario pierdo la sesión

Hola amigos,

tras un logado, meto en sesión al usuario y algunos datos más. El caso es que en otra página que tengo un formulario, redirecciono hacia una página controladora que recoger via POST la acción a realizar, y ahí, al comprobar si el usuario está en sesión, este no aparece.

Aqui tengo el formulario:
Código PHP:
<form name="frmListar" action="./controlador.php" method="POST"
Si en la clase controlador.php hago esto ya no veo al usuario:
Código PHP:
<? 
include("constantes.php");
echo(
'usuario: '.$_SESSION[CT_USER]);
?>
Qué estoy haciendo mal?

Gracias.

Última edición por Okada; 25/02/2007 a las 06:00 Razón: Descuadra el post
  #2 (permalink)  
Antiguo 25/02/2007, 06:32
Avatar de marcosr  
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Al hacer submit en un formulario pierdo la sesión

En la página que dices que el usuario deja de aparecer inserta este código bien arriba:

Código PHP:
session_start(); 
Si el problema continúa no dudes en consultar nuevamente !

__________________
Yo hago preguntas inteligentes para obtener respuestas rapidas, y vos?
(únete a la campaña !)
  #3 (permalink)  
Antiguo 25/02/2007, 06:34
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Al hacer submit en un formulario pierdo la sesión

¿estás iniciando la sesión en todas las páginas que la usen? (con session_start())

creo que deberías hacer un var_dump() o un print_r de $_SESSION para ver si las variables que necesitás están definidas.

Saludos.
  #4 (permalink)  
Antiguo 25/02/2007, 06:39
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Al hacer submit en un formulario pierdo la sesión

Efectivamente, he hecho el var_dump y me sale un NULL bien grandote.

Entonces he de poner session_start() en todas las páginas que la usen? Pensaba que sólo había que ponerlo al inicio de la sesión, en la parte del logado...
  #5 (permalink)  
Antiguo 25/02/2007, 06:45
Avatar de marcosr  
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Al hacer submit en un formulario pierdo la sesión

Efectivamente, prueba hacerlo.
__________________
Yo hago preguntas inteligentes para obtener respuestas rapidas, y vos?
(únete a la campaña !)
  #6 (permalink)  
Antiguo 25/02/2007, 06:47
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Al hacer submit en un formulario pierdo la sesión

marcosr, he puesto eso al inicio y me ocure lo mismo, al visualizarlo con el var_dump me sigue saliendo null.

os pongo la estructura esquematizada a ver si me podéis echar un cable :)

admin.php -> Realizo una autentificación http y meto en sesión al usuario
Código PHP:
$_SESSION[CT_USER] = $usuario
Aqui he de comentar que antes de meter al usuario en sesion hago un session_destroy porque quiero leiminar otas variables previas que hubiera en sesión.

luego hago un
Código PHP:
<?include("administracion.php")?>
administracion.php -> Compruebo el logado, va bien, e inserto la estructura html. Tengo un div en el que llamo a cabecera_admin.php con un include

En cabecera_admin.php es donde tengo el código que antes os he mostrado.

He de decir que solo tengo un session_start en el primer php, en admin.php

HELP!!!
  #7 (permalink)  
Antiguo 25/02/2007, 07:04
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Al hacer submit en un formulario pierdo la sesión

Vaya, si pongo session_start en el inicio de los php´s comentados, me fallan las comprobaciones de logado que realizo...vamos mal por ahí...
  #8 (permalink)  
Antiguo 25/02/2007, 07:09
Avatar de marcosr  
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Al hacer submit en un formulario pierdo la sesión

Pues no sé que puede estar ocurriendo pero básicamente asegúrate de estar realizando lo siguiente:
  • Se recogen correctamente los datos POST?
  • Si actualizas a la BD los datos llegan correctamente?
  • Y esto es importante, session_start(); lo estás colocando bien arriba en la página? Es importante que el var_dump(); esté por debajo de session_start();
__________________
Yo hago preguntas inteligentes para obtener respuestas rapidas, y vos?
(únete a la campaña !)
  #9 (permalink)  
Antiguo 25/02/2007, 07:13
Avatar de marcosr  
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Al hacer submit en un formulario pierdo la sesión

Has enviado el mensaje mientras yo escribía el mío.

Bien, hasta aquí llegaron mis conocimientos no se que puede estar ocurriendo. Si yo fuera tu revisaría muy bien los códigos, todos, y si no encuentro el error empezaría de nuevo. Pero quizás quieras esperar a que alguien con más conocimientos te de una mano.
__________________
Yo hago preguntas inteligentes para obtener respuestas rapidas, y vos?
(únete a la campaña !)
  #10 (permalink)  
Antiguo 25/02/2007, 07:15
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Al hacer submit en un formulario pierdo la sesión

Buenas, gracias por la ayuda. Si, recojo bien los datos del POST, lo de BD no lo uedo probar porque precisamente necesito el usuario para la inserción en BD.

En cuanto a lo de session_start(), si lo tengo asi:

Código PHP:
<?session_start();
include(
"constantes.php");
var_dump($_SESSION[CT_USER]);
echo(
$_SESSION[CT_USER]);
?>
  #11 (permalink)  
Antiguo 25/02/2007, 07:17
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Al hacer submit en un formulario pierdo la sesión

Cita:
Iniciado por marcosr Ver Mensaje
Has enviado el mensaje mientras yo escribía el mío.

Bien, hasta aquí llegaron mis conocimientos no se que puede estar ocurriendo. Si yo fuera tu revisaría muy bien los códigos, todos, y si no encuentro el error empezaría de nuevo. Pero quizás quieras esperar a que alguien con más conocimientos te de una mano.
Muchas gracias, de veras.

A ver si se conecta al gtalk un amigo que tengo que es un crack y me echa un cable, lo que pasa que me da un palo tremendo porque siempre le esoty preguntando cosas... :D
  #12 (permalink)  
Antiguo 25/02/2007, 16:15
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Al hacer submit en un formulario pierdo la sesión

Cita:
Vaya, si pongo session_start en el inicio de los php´s comentados, me fallan las comprobaciones de logado que realizo...vamos mal por ahí...
El error será otro. Si querés usar sesiones, tenés que poner el session_start() en cada archivo que deba trabajar con ellas (bueno, no en cada archivo, si tenés algo como
<?php
session_start();
include('archivo.php');
?>
no es necesario que tengas el session_start() en archivo.php)

Haz un var_dump() de _SESSION, no de _SESSION[CT_USER], y contá lo que te aparece.

Y lo que es más importante para cuando hay errores: asegurate de que el servidor te muestra cualquier error que pueda estarse produciendo, agregando la siguiente línea al comienzo del archivo:

error_reporting(E_ALL);

A ver qué sale...


Saludos.
  #13 (permalink)  
Antiguo 26/02/2007, 14:50
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Al hacer submit en un formulario pierdo la sesión

Hola alvlin:

Esto es lo que me sale al poner el var_dump de $_SESSION

array(0) { }

Errores no deja.

Tengo puesto en el comienzo del fichero el session_start() como me habéis indicado. En el formulario he de hacer algo?

En el resto de .php cuando pongo session_start me pone:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\web\admin\admin.php:53) in D:\web\admin\cabecera_admin.php on line 2

por lo que entiendo no hay que ponerlo.


He de decir que las posiciones que uso en sesion las tengo definidas como constantes en un constantes.php. Pueden ir por ahí los tiros de que no lo esté conservando?
  #14 (permalink)  
Antiguo 26/02/2007, 19:30
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Al hacer submit en un formulario pierdo la sesión

Cita:
por lo que entiendo no hay que ponerlo.
No, deberías "entender" que hay antes del session_start() algún texto fuera del bloque de código PHP.
No puede haber NADA, ni un salto de línea, ni un espacio, antes de

<?php

en el archivo. Si hay algún caracter antes, se envía al navegador y eso anula cualquier cabecera que pudieras querer enviar luego.

En particular el mensaje de error que pegaste te indica que hay salida de texto en D:\web\admin\admin.php:53 (o sea, en la línea 53 del archivo). Buscá e intentá evitar esa salida.


Saludos.
  #15 (permalink)  
Antiguo 28/02/2007, 13:20
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Al hacer submit en un formulario pierdo la sesión

Voy acotando...

Desde luego qué paciencia estási teniendo conmigo. Muchas gracias.

Os cuento:

Llegado a esta parte no tengo ningún problema con la session.

Código PHP:
<?
include("logado.php");
?>

<html>
    <head>
        <title>Administración</title>
        <script language="javascript" type="text/javascript" src="administracion.js"></script>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
        <link rel="stylesheet" type="text/css" href="css/estilo.css">
    </head>
    <body onLoad="cargar(); frmListar.<?=CT_GRUPO?>.focus()">
        <div><?include('cabecera_admin.php');?></div>
        <div></div>
    </body>
</html>

<script>
En cabecera_admin sigo conservando la información guardada en sesión (con el var_dump lo compruebo ahora muy bien)

Ahora llega la parte interesante.

Os pongo tal cual mi cabecera_admin.php

Código PHP:
<?
include('logado.php');
?>
<form name="frmListar" action="./controlador.php" method="POST">
    <input type='hidden' name=<?=CT_ACCION?> value=<?=CT_PERFIL?>>
    <table cellpadding='0' cellspacing='0' width="100%" height="10%">
        <tr>
            <td rowspan='2' align='left' width="78%">
                <img src="../imagenes/logoAdmin.gif" border=0 title="Ir a inicio" 
                     onClick='document.location="../inicio.php"' style="cursor:pointer"></td>
            <td><table width="100%" height="100%">
                    <tr><td ></td></tr>
                    <tr height="1">
                        <td width="50%"><input type="text" name=<?=CT_GRUPO?> onKeyPress='detectar()'></td>
                        <td align='right'><img src="../imagenes/iconbusq.jpg" style="cursor:pointer" width="45px"                                               height="45px" onClick='aceptar()'>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</form>
Y en controlador.php es donde tengo el problema de que pierdo la info de sesión, aunque comience con session_start() el php...

Qué rayos hago mal? Gracias.

Última edición por Okada; 28/02/2007 a las 13:39
  #16 (permalink)  
Antiguo 28/02/2007, 16:14
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Al hacer submit en un formulario pierdo la sesión

El problema sólo puedes tenerlo en tres sitios:

1. En controlador.php: o no estás poniendo ahí el session_start y no has incluido tu fichero de constantes.

2. En la página donde has creado la sesión (en tu login): o no has incluido el session_start o no tienes incluido tu fichero de constantes.

3. En la página donde tienes el sessón_destroy (entiendo que en la misma del login): lo tienes puesto en mal sitio (prueba a quitarlo momentáneamente).


No se me ocurre más. La sesión así usada, no tiene más misterios. Te adjunto un código de uso de sesión para que veas que te tiene que funcionar sin problemas (pega el código en un prueba.php y ejecútalo en tu servidor):

<?php
session_start();

if ($_REQUEST['desconectar'] != "") {
session_unset();
session_destroy();
session_start();
}

if (!$_SESSION["MISESION"]) {
$_SESSION["MISESION"] = "Estoy en sesión.";
$texto = "Sin sesión.";
} else {
$texto = $_SESSION["MISESION"];
}

echo("Estado de la sesión: $texto");
?>

Saludos.
  #17 (permalink)  
Antiguo 01/03/2007, 15:12
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Al hacer submit en un formulario pierdo la sesión

He probado a comentar el session_destroy y ahora tira perfectamente. Salvo para lo que usaba el sesión destroy que era para que se tuvieran que logar cada vez que accedían a esa parte.

Muchas gracias por tu ayuda, abusando de tu amabilidad voy a poner el trozo de código donde tenía el sesion_destroy para ver si podría reubicarlo en alguna otra parte. He acortado el código

Código PHP:
<?PHP
    
    
if (!isset ($_SESSION[CT_CLAVE])) {
        
session_start();
    }
    
    if (!isset(
$_SERVER['PHP_AUTH_USER']) || !isset ($_SESSION[CT_CLAVE]) || !$_SESSION[CT_CLAVE){
        
$_SESSION[CT_CLAVE] = true;
        
authenticate();
    } else {
        if(!
validaUsuario(addslashes($_SERVER['PHP_AUTH_USER']), addslashes($_SERVER['PHP_AUTH_PW']))) {
            
authenticate();
        }
    }
    
    function 
authenticate() {
        
header("HTTP/1.0 401 Unauthorized");
        
header("WWW-Authenticate: Basic realm=\"Acceso restringido\"");
        echo (
"<script>document.location='../inicio.php'</script>");
        exit;
    }
        
    include(
"constantes.php");
    
$usuario $_SERVER['PHP_AUTH_USER'];
    
session_destroy();
    
    
    
//Parámtero de seguridad de sesión
    
$_SESSION[CT_USER] = $usuario;
    
$_SESSION[CT_SESION] = CT_COD_SEG;
    
    
//Administración de la güé
    
include("administracion.php")
?>
Por qué tanto en administracion.php como en los php que incluía dentro de administracion.php si que conservaba la sesión y luego no?

Ayudame please.

Thnkx
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 04:50.