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>';
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/>';
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");
}