Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/01/2011, 19:01
Tram
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 18 años, 3 meses
Puntos: 0
Problema idiomas y sesiones

Hola,

Tengo una web en php y estoy creando la versión en inglés. Para ello creo una variable de sesión con el idioma, y dependiendo del idioma escogido, cargo un ficheron con los textos en español o inglés. El problema es que sólo me funciona con el index.php. Cuando un usuario accede a la web, a su menú de usuario y una vez autentificado escoge el idioma inglés, los textos no cambian y la variable sigue valiendo "español".

La estructura de la web es:

----------- menu.php (un menu horizontal) ----
..........|
menu | ..... contenido ....... .... .... acceso (log in)
izq.....|

en menu.php tengo:
Código PHP:
if (!isset($idioma)){$idioma "es";}
if(isset(
$idioma)){
     
$_SESSION['idioma']= $idioma;

include(
"idiomas_$idioma.php");

echo 
'<ul>
<li><a href="index.php">'
.$t_inicio.'</a></li>
<li><a href="#">'
.$t_mapa.'</a></li>
<li><a target="_blank" href="ayuda.php">'
.$t_ayuda.'</a></li>
<li><a href="#">'
.$t_contacto.'</a></li>
</ul>'
;

if(
$_SESSION['estado']=='OK') echo "<ul><li><a href=\"logout.php\">Logout</a></li></ul>";

echo 
'<div align="right">';
echo 
"<a href=\"".$_SERVER['PHP_SELF']."?idioma=en\"><img src=\"imagenes\gb.png\"></a> 
<a href=\""
.$_SERVER['PHP_SELF']."?idioma=es\"><img src=\"imagenes\es.png\"></a></p>";
echo 
'</div>'
en index.php tengo:
Código PHP:
if (!isset($idioma)){$idioma "es";}
if(isset(
$idioma)){
     
$_SESSION['idioma']= $idioma;

include(
"idiomas_$idioma.php");


//.... contenido ....

echo "<h1>".$t_acceso."</h1>"

echo 
'<FORM action="menu_usuario.php" method="get">
            <table width="150" border="0">
              <tr>
                <th width="74"><LABEL for="login">Login:</LABEL></th>
                <td width="76"><INPUT type="text" name="login_index" id="login"></td>
              </tr>
              <tr>
                <th width="74"><LABEL for="password">'
.$t_pass.':</LABEL></th>
                <td width="76"><INPUT type="password" name="password_index" id="password"></td>
              </tr>
            </table>
            <INPUT type="submit" value="'
.$t_enviar.'" name="enviar"> <INPUT name="borrar" type="reset" id="borrar" value="'.$t_borrar.'">
            </p>
            <p>'
.$t_nuevousuario.' <b><a href="registro_usuario.php">'.$t_aqui.'</a></b></p>
            </P>
    </FORM>
<br/>
<br/>
<br/>'

Teniendo esto, cuando doy a la bandera inglesa, cambia perfectamente los textos a inglés.

Si accedo a la parte privada logueandome, y doy a la bandera, no cambia.
En mensuario.php (a donde te lleva el formulario) tengo esto:

Código PHP:
session_start();

if (!isset(
$idioma)){$idioma "es";}
if(isset(
$idioma)){
     
$_SESSION['idioma']= $idioma;

include(
"idiomas_$idioma.php");

//codigo para comprobar que el usuario y la contraseña son correctos .....


//en funcion del tipo de usuario muestro un menú
    
if($tipo == "normal") {
$_SESSION['tipousuario'] = 'nor';
include(
"usuario_normal.php");
        }
    else if(
$tipo == "experto") {
    
$_SESSION['tipousuario'] = 'exp';
    include(
"usuario_experto.php");
    } 
He probado a imprimir las variables de sesión, y idioma es siempre igual a "es". Le doy a la bandera inglesa y no cambia, sigue mostrando "es". Alguna idea?