Foros del Web » Programando para Internet » PHP »

Cómo guardar correctamente unos datos en una sesion?

Estas en el tema de Cómo guardar correctamente unos datos en una sesion? en el foro de PHP en Foros del Web. HOLA! alguien podria decirme que esta mal en este codigo? Código PHP: <? // miarchivo.php session_start (); if ( $_SERVER [ 'REQUEST_METHOD' ] ==  'POST' )  {     if (isset( ...
  #1 (permalink)  
Antiguo 06/09/2005, 11:06
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Pregunta Cómo guardar correctamente unos datos en una sesion?

HOLA!
alguien podria decirme que esta mal en este codigo?
Código PHP:
<?
// miarchivo.php
session_start();
if (
$_SERVER['REQUEST_METHOD'] == 'POST'
{
    if (isset(
$_POST["estado"]))
    {
        print 
"sending";
        
$_POST $_SESSION;
        
print_r($_POST);
    }
    else
    {
        
$_SESSION $_POST;
        
print_r($_SESSION);
    }
}
else
    if (isset(
$_GET['destino']))
    {
        
//codigo
    
}
//continua
?>
El problema es el sgte:
miarchivo.php es llamado por 2 archivos diferentes. Uno por metodo POST, y el otro por GET.
En miarchivo.php, hay un link que envia una sentencia para modificar un registro en una tabla. El resultado se muestra en la misma pagina, por eso es que necesito guardar los valores que fueron enviados desde esos 2 archivos.

Ya he probado muchas formas, pero sin éxito, por eso recurro a su ayuda.
Espero que alguien pueda ayudarme.
Gracias de antemano!
  #2 (permalink)  
Antiguo 06/09/2005, 14:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Las sesiones no quedan registradas hasta tu nueva interacción con el servidor .. es decir .. hasta que no recargas la página teóricamente todo dato que veas no es el que realmente está en la sesión.

Por ende . .no deberías hacer esto:

$_SESSION = $_POST;
print_r($_SESSION);

Por lo menos esperar ahí mismo ver los valores que esperas.

No entiendo bien tu situación .. pero teóricamente deberías recargar la página al recibir tus datos y registrarlos en tu variable de sesión para seguidamente usar los datos que tienes en tu sesión ya sea en ese script (el mismo) o en otro donde redirecciones:

Código PHP:
  print "sending"
   
$_SESSION['variables'] = $_POST
  
header ("Location: dondesea.php");
   exit; 
Y basarte primero en la validación de que si tu variable de sesión existe .. la usas sino, usas $_REQUEST directamente si lo requieres.

Código PHP:
if (isset($_SESSION['variables'])){
// la pagina se recargo .. haz lo que tengas que hacer con:
// $_SESSION['variables']['alguna_variable_tuya']

Un saludo,
  #3 (permalink)  
Antiguo 06/09/2005, 17:40
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Modifique como me recomendaste, pero persiste el mismo problema.
Aquí posteo parte de mi cdigo:
Código PHP:
<?
    
//miarchivo.php
    
session_start();
    include 
"config.php";

    if (isset(
$_SESSION['var1']))
    {
        
$var1 $_SESSION["var1"];
        
$var2 $_SESSION["var2"];
        
$var3 $_SESSION["var3"];
        if (isset(
$_POST["estado"]))
        {
            
$cod $_POST["cod"];
            
$sql "UPDATE ...$cod;";
            
mysql_query($sql) or die(mysql_error());
        }
    }
    else
    {
        if (
$_SERVER['REQUEST_METHOD'] == 'POST'
        {
            
$_SESSION["var1"] = $_POST["var1"];
            
$_SESSION["var2"] = $_POST["var2"];
            
$_SESSION["var3"] = $_POST["var3"];
        }
        else
            if (isset(
$_GET['destino']))
            {
                
$_SESSION["destino"] = $_GET["destino"];
            }
    }
//mas codigo
?>
Este formulario envia 2 valores a miarchivo.php (el mismo archivo):
Código HTML:
 <form name="formEstado" method="post" action="miarchivo.php">
	  <input type="hidden" name="estado" value="V">
	  <input type="hidden" name="cod" value="">
	</form> 
El formulario anterior se envia, si presiona este enlace:
Código HTML:
<a href="javascript:document.formEstado.cod.value=<? print $cod; ?>; document.formEstado.submit();"><? print $textoEnlace; ?></a> 
Alguien por favor digame que estoy haciendo mal?
  #4 (permalink)  
Antiguo 19/09/2005, 05:10
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Antes de hacer el header debes llamar a la funcion session_write_close() para que se guarden los datos de sesion
  #5 (permalink)  
Antiguo 19/09/2005, 17:53
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Gracias!
realmente hace lo que necesito, aunque no entendi bien lo de "header". Te refieres al include?
Bueno, yo lo puse asi:
if (isset($_SESSION['var1']))
{
}
else
{
//inicializacion de variables de sesion
session_write_close();
}
Lo hice bien?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
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:10.