FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema con parámetros o sesiones
Hola compañeros
Pues la verdad es que no se de donde biene mi problema, si de las sesiones o del paso de parámetros, pero es que no me sale Os cuento. Estoy haciendo una web multiidioma y, desde unas banderitas el usuario podrá escoger el idioma de la web. Bien, pues para hacer esto, he pensado utilizar sesiones y, me declaro la siguiente Código:
session_start(); if ( !isset( $lan ) || ( $lan == '') ) $lan = 'esp'; session_register( "lan" ); El enlace de las banderitas hago lo siguiente Código:
<a href="php_code/idioma.php?lang=0"> <img src="images/esp.gif" border="0" alt=" Español "> </a> Código:
<? switch ( $lang ) { case 0 : $lan = 'esp'; break; case 1 : $lan = 'cat'; break; case 2 : $lan = 'fra'; break; case 3 : $lan = 'ing'; break; } session_start(); session_register( "lan" ); header( "Location: ../index.php" ); ?> Pues bien, resulta que si voy chequeando las dos variables (lang y lan) a lo largo del recorrido, estas siempre valen lo mismo, el valor por defecto que le asigno al principio (es decir, "esp"). Lo extraño es que "lang" me valga ese valor (cuando se esta pasando como parámetro un 0, 1, 2, o 3 según el idioma), por lo que no se me actualiza nunca el valor de "lan" para cambiar el idioma. Alguien ve donde estoy errando? Gracias y perdón por el rollo |
#2
|
||||
|
||||
Es difícil decir ya que no se qué código está en qué página. Mientras nos cuentas lo único que pregunto es:
¿Usas session_start() en todas las páginas? Si no es así, te recuerdo que hay que hacerlo. // Saludos pd: ¿Conoces la etiqueta [ php ]? |
#3
|
|||
|
|||
Cita:
así que tenemos el index.php y idioma.php (donde sólo está el switch Cita:
|
#4
|
||||
|
||||
Hola
Me temo que se te estás haciendo un lío con las variables de sesión y las pasadas por POST Dicho de paso, ten en cuenta que el switch puede evaluar cadenas, por lo que no es necesario que hagas cosas como case 0 : $lan = 'esp'; como si de Delphi se tratase. Esta noche le pego un vistazo y lo solucionamos, que ahora tengo prisa. Saludos Emilio. |
#5
|
||||
|
||||
Vamos a ver. Creo que el problema está en que en la página del "switch" llamas a session_start después del switch. session_start debe llamarse antes de utilizar cualquier variable registrada.
Por otra parte en la página de inicio me parece que debes revisar la condición con session_is_registered en lugar de isset y, para mi gusto, omitir la comparación con la cadena vacía así como encajar el registro dentro del condicional: Código PHP:
|
#6
|
|||
|
|||
buuuaaaa!!!!!
jejejeje, bueno, veamos, lo tengo ahora así index.php Código PHP:
Código PHP:
http://127.0.0.1/web/Proves/php_code/idioma.php?lang=cat por lo que deduzco que se está pasando bien el parámetro pero no se esta recibiendo (o no se recibe bien). Se me escapa algo, pero no veo el qué :'( Alguna sugerencia más? PD: ahora sí he utilizado la etiqueta php |
#7
|
||||
|
||||
Pues sí, dos sugerencias más
1.- Mira que tu register_globals esté a "on" 2.- Si pasas la variable por GET recógela de igual forma, es decir con $HTTP_GET_VARS["lang"] Seguramente su register_globals lo tienes a off y de ahí los problemas que te están surgiendo, el del Club lo tengo a on, sube tus ficherillos y seguramente sin tocar nada ya te va a funcionar. Saludos Emilio |
#8
|
|||
|
|||
Cita:
Cita:
|
#9
|
|||
|
|||
Cita:
Gracias y perdón por las molestias |
|
|
|