Foros del Web » Programando para Internet » PHP »

Problema idiomas y sesiones

Estas en el tema de Problema idiomas y sesiones en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/01/2011, 19:01
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 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?
  #2 (permalink)  
Antiguo 06/01/2011, 19:03
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problema idiomas y sesiones

Haces session_start(); en todos tus php?
  #3 (permalink)  
Antiguo 06/01/2011, 19:07
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Problema idiomas y sesiones

Cita:
Iniciado por walterdevel Ver Mensaje
Haces session_start(); en todos tus php?
Sí, en todos
  #4 (permalink)  
Antiguo 06/01/2011, 19:17
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Problema idiomas y sesiones

Acabo de probar una cosa. Quitando el session_start() de la pagina menu__usuario.php, sí cambia los textos a inglés. No lo entiendo
  #5 (permalink)  
Antiguo 06/01/2011, 19:17
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problema idiomas y sesiones

También estás declarando $idioma = $_GET['idioma']; no?
  #6 (permalink)  
Antiguo 06/01/2011, 19:22
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Problema idiomas y sesiones

Cita:
Iniciado por walterdevel Ver Mensaje
También estás declarando $idioma = $_GET['idioma']; no?
Ese era el fallo, me falta esa línea antes del include
Gracias

Etiquetas: idiomas, sesiones
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 18:43.