note 48942 deleted from function.session-start by tularis
| From: | tularis@php.net | Date: | Wed, 12 Jan 2005 15:53:12 +0000 |
| Subject: | note 48942 deleted from function.session-start by tularis | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-83154@lists.php.net to get a copy of this message | ||
Note Submitter: ALFREDO LEAL. AYTO. S/C TFE. O.A.FIESTAS
----
Running. Ejecutandose:
Apache 1.3.27
PHP 4.3.3
Windows XP
PROBLEM, PROBLEMA:
VARIABLE SESSION LOST ON HEADER REDIRECT
VARIABLES DE SESION PERDIDAS AL REDIRECCIONAR
EXPLAIN. EXPLICACION:
Documentation.(Part)
Extracto de Documentacion. (in spanish, en español) del sitio php.net
(http://es2.php.net/manual/es/ref.session.php)
******* BEGIN ***************
Si track_vars está activado y register_globals está desactivado,sólo los miembros del
vector asociativo global $HTTP_SESSION_VARS pueden ser registrados como variables de
la sesión. Las variables restauradas de la sesión sólo estarán disponibles en el vector
$HTTP_SESSION_VARS.
Ejemplo 1.
Registrar una variable con track_vars activado
<?php
session_start();
if (isset($HTTP_SESSION_VARS['count'])) {
$HTTP_SESSION_VARS['count']++;
}
else {
$HTTP_SESSION_VARS['count'] = 0;
}
?>
Se recomienda usar $_SESSION (o $HTTP_SESSION_VARS con PHP 4.0.6 o inferior) por seguridad y para
hacer el código más legible. Con $_SESSION o $HTTP_SESSION_VARS, no es necesario usar las
funciones session_register() / session_unregister() / session_is_registered().
****** END **************
SOLUCION - SOLUTION:
MI EJEMPLO. MY EXAPLE:
two files. Dos archivos: amigo1.php amigo2.php
amigo1.php
<?php
session_start();
// si en el php.ini trac_vars = on y register_globals = off
// if php.ini contains trac_vars = on and register_globals = off
// solo los miembros de $http_session_vars pueden ser registrados como variables de sesion
// only $http_session_vars members can be registred as session variable
//registramos una variable en http_session_vars
// register var in http_session var
$HTTP_SESSION_VARS["myvar"]="This is my value. Este es mi valor";
//session_register("n"); <---- has not effect in next session if trac_vars is on
and regirter_globals is off
//session_write_close(); <<---- is not nesesary no es necesario
//redir to amigo2.php redireccionar a amigo2.php
//enviar la id de sesion para comprobar sending id session for test.
header("location:amigo2.php?identificador=".session_id());
?>
amigo2.php
<?php
session_start();
// this block for view session id - bloque para comprobar las sesiones
echo "anterior (prior): ".$_REQUEST["identificador"]."<p>";
echo "actual: (now) ".session_id()."<p>";
// end block fin del bloque
//test:
//resque session var - rescatamos la variable de sesion
//$mval=$HTTP_SESSION_VARS["myvar"]; // <------ SI, CORRECTO
$mval=$_SESSION["myvar"]; // <------ SI, CORRECTO
//$mval=$myvar; <------- NO, INCORRECTO!!!!
echo "<p><big> ===> ".$mval." <=== </big>";
?>