Foros del Web » Programando para Internet » PHP »

Sesion no registra variable

Estas en el tema de Sesion no registra variable en el foro de PHP en Foros del Web. Hola a [email protected] El siguiente codigo que he resumido me está dando dolor de cabeza: <? session_start(); if (!IsSet($idioma)){ $idioma ="spanish"; } session_register("idioma"); include ("conf/".$idioma.".inc.php"); ...
  #1 (permalink)  
Antiguo 19/03/2004, 06:13
Avatar de manuweb  
Fecha de Ingreso: julio-2002
Mensajes: 75
Antigüedad: 15 años, 5 meses
Puntos: 10
Sesion no registra variable

Hola a [email protected]

El siguiente codigo que he resumido me está dando dolor de cabeza:

<?
session_start();
if (!IsSet($idioma)){
$idioma ="spanish";
}
session_register("idioma");

include ("conf/".$idioma.".inc.php");
?>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>

<BODY>
<?
$array = $HTTP_POST_VARS;
$n=0;
while ( list ( $header, $valor ) = each( $array ) ) {
echo "[$n] $header: $valor<br>\n";
$n++;
}

echo "Pero el valor de idioma es:".$idioma;?>

<FORM METHOD=POST name="cambioidioma" ACTION="<? echo $PHP_SELF;?>">
<SCRIPT LANGUAGE="JavaScript">
<!--
function ir(direccion) {
document.cambioidioma.idioma.value=direccion;
document.cambioidioma.submit();
}
//-->
</SCRIPT>
<INPUT TYPE="hidden" name="idioma" value="<?echo $idioma;?>">
<INPUT TYPE="button" value='spanish' onclick="ir('spanish')">
<INPUT TYPE="button" value='english' onclick="ir('english')">
</FORM>
</BODY>
</HTML>

¿por que no me recoge el valor de $idioma y si en $HTTP_POST_VARS? .

Gracias.
  #2 (permalink)  
Antiguo 19/03/2004, 07:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Se supone que tu $idioma es una variable de sesión? .. como la registras (con session_register() ? ...)

Lee este mensaje sobre el tema de variables globales y todo lo refente:

http://www.forosdelweb.com/showthrea...989#post238989

Deberias usar $HTTP_SESSION_VARS (ya que usas $HTTP_POST_VARS) .. pero mejor los nuevos arrays superglobales (no tan nuevos que ya tendrán sus 2 añitos) si usas PHP 4.1.0 en adelante)... Insisto .. lee esa FAQ. y las referentes a "sesiones" que hay a continuación.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 22/03/2004, 06:17
Avatar de manuweb  
Fecha de Ingreso: julio-2002
Mensajes: 75
Antigüedad: 15 años, 5 meses
Puntos: 10
Hola Cluster.

Evidentemente la linea include(... sobra, pero para el caso es igual.

register_globals lo tengo en on, el problema es que no registra la variable $idioma, y por eso siempre toma el valor que se le da despues del IsSet.

Utilizo $HTTP_POST_VARS para comprobar que la variable $idioma es pasada, pero no se me ha registrado ¿¿???

Aggggggggggggggghhhhhhhhhhhhhhhh (desesperacion)
__________________
Mis aportes:

mwbackup. Guardar y recuperar datos con barra de progreso.
  #4 (permalink)  
Antiguo 22/03/2004, 06:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Las variables de sesión si usas los arrays $HTTP_xxxx_VARS están en:

$HTTP_SESSION_VARS['nombre_variable'] ...

No en POST .. que serían las variables que provienen del formulario si se uso método POST (method="Post" ..)

Te recomiendo no mezclar métodos .. estás asumiento como globales las variables de sesión (muy peligroso) al intentar accederlas por $nombre_variable y registrarlas por session_register() .. Si usas PHP 4.1.0 en adelante deberías usar los arrays superglobales para todo: $_SESSION, $_POST .. etc

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 22/03/2004, 06:30
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Consejo, no uses el mismo nombre para las variables de sesion y para los parametros de los formularios.

Con register_gobals a ON no sabe si $idioma es la de la sesion o la del formulario.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 22/03/2004, 13:00
Avatar de manuweb  
Fecha de Ingreso: julio-2002
Mensajes: 75
Antigüedad: 15 años, 5 meses
Puntos: 10
Gracias.

Pero de todas formas, al cambiar el nombre de las variables if (!IsSet($variable_del_formulario)) me devuelve verdadero, y comprobando $HTTP_POST_VARS, $variable_del_formulario existe.

¿¿??

En otros script que hice, utilizo variables de sesión (un carrito de la compra) de la misma forma y si funciona.

Sigo sin comprender el porque.

Gracias nuevamente.
__________________
Mis aportes:

mwbackup. Guardar y recuperar datos con barra de progreso.
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 16:53.