note 48942 added to function.session-start
| From: | ALFREDOLEAL dot AYTO dot S/CTFE dot O dot A dot FIESTAS at osu1 dot php dot net | Date: | Wed, 12 Jan 2005 14:55:09 +0000 |
| Subject: | note 48942 added to function.session-start | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-83153@lists.php.net to get a copy of this message | ||
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>";
?>
----
Manual Page -- http://www.php.net/manual/en/function.session-start.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+48942
Delete -- http://master.php.net/manage/user-notes.php?action=delete+48942&report=yes
Reason: bad code -- http://master.php.net/manage/user-notes.php?action=delete+48942&report=yes&reason=bad+code
Reason: spam -- http://master.php.net/manage/user-notes.php?action=delete+48942&report=yes&reason=spam
Reason: useless example -- http://master.php.net/manage/user-notes.php?action=delete+48942&report=yes&reason=useless+example
Reason: contains commercial links -- http://master.php.net/manage/user-notes.php?action=delete+48942&report=yes&reason=contains+commercial+links
Reason: useless note -- http://master.php.net/manage/user-notes.php?action=delete+48942&report=yes&reason=useless+note
Reject -- http://master.php.net/manage/user-notes.php?action=reject+48942&report=yes
Search -- http://master.php.net/manage/user-notes.php