Foros del Web » Programando para Internet » PHP »

Problemas con cookies,multilenguaje y GET

Estas en el tema de Problemas con cookies,multilenguaje y GET en el foro de PHP en Foros del Web. Hola a tod@s!! No se, tal vez sea porque llevo ya mas de 16 horas programando, que no logro ver el error en este codigo. ...
  #1 (permalink)  
Antiguo 26/09/2011, 14:05
 
Fecha de Ingreso: mayo-2004
Mensajes: 102
Antigüedad: 19 años, 11 meses
Puntos: 5
Pregunta Problemas con cookies,multilenguaje y GET

Hola a tod@s!!
No se, tal vez sea porque llevo ya mas de 16 horas programando, que no logro ver el error en este codigo.
Practicamente, tengo una pagina en 5 idiomas, una parte de la traduccion esta en la base de datos, digamos la parte dinamica mientras que la parte estatica esta en files, con define('','')

Este es el script:

Código PHP:
if(isset($_GET['lang'])){
$elidiomamanual $_GET['lang'];
switch(
$elidiomamanual){
case 
"es" //es = español 
         
$elidioma "es";
             
setcookie('md4s_idioma'$elidioma);
             include(
"lang/es.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
          
break;
          case 
"en" //en = ingles 
          
$elidioma "en";
                       
setcookie('md4s_idioma'$elidioma);
              include(
"lang/eng.php");
          break;
          case 
"it" //it = italiano 
                       
setcookie('md4s_idioma'$elidioma);
          
$elidioma "it";
             include(
"lang/it.php");
          break;
           case 
"fr" //it = italiano 
           
$elidioma "fr";
                        
setcookie('md4s_idioma'$elidioma);
             include(
"lang/fr.php");
          break;
          case 
"pt" //pt = portugues 
                       
setcookie('md4s_idioma'$elidioma);
          
$elidioma "pt";
             include(
"lang/pt.php");
          break;
             
          default :
          
$elidioma "en";
               
setcookie('md4s_idioma'$elidioma);
             include(
"lang/eng.php"); //cargamos un idioma por defecto si no se encontro algun idioma 
             
break;
    }
//define lenguaje
if(isset($_COOKIE['md4s_idioma'])){
$elidiomita $_COOKIE['md4s_idioma'];
    switch(
$elidiomita){
case 
"es" //es = español 
$elidioma "es";
include(
"lang/es.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
break;
      
case 
"en" //en = ingles 
$elidioma "en";
include(
"lang/eng.php");
break;

case 
"it" //it = italiano 
$elidioma "it";
include(
"lang/it.php");
break;

case 
"fr" //it = italiano 
$elidioma "fr";
include(
"lang/fr.php");
break;
         
case 
"pt" //pt = portugues 
$elidioma "pt";
include(
"lang/pt.php");
break;
             
default :
$elidioma "en";
include(
"lang/eng.php"); //cargamos un idioma por defecto si no se encontro algun idioma 
break;
}
}else{
    if(empty(
$elidiomita)){        
    
$sitelang getenv("HTTP_ACCEPT_LANGUAGE"); // si esta vacia sacamos el lenguage del visitante y lo ponemos en la variable $sitelang
    
$sitelang substr($sitelang02);
    
session_start(setcookie('md4s_idioma'$sitelang));//guarda la cookie automaticamente con el idioma
    
switch($sitelang){
             case 
"es" //es = español 
             
$elidioma "es";
             include(
"lang/es.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
          
break;
          case 
"en" //en = ingles 
          
$elidioma "en";
              include(
"lang/eng.php");
          break;
          case 
"it" //it = italiano 
          
$elidioma "it";
             include(
"lang/it.php");
          break;
           case 
"fr" //it = italiano 
           
$elidioma "fr";
             include(
"lang/fr.php");
          break;
          case 
"pt" //pt = portugues 
          
$elidioma "pt";
             include(
"lang/pt.php");
          break;
             
          default :
          
$elidioma "en";
             include(
"lang/eng.php"); //cargamos un idioma por defecto si no se encontro algun idioma 
             
break;
    }    
    }    
    }

    
//guarda la cookie segun selecciona el usuario con el idioma
    

Entonces que hace este script?
-Si llega el lenguaje por GET, crea una cookie, incluye el file del idioma que se y le da el valor a una variable con el idioma ejemplo es, it, fr,en o pt.
-Si el cookie existe toma el valor del cookie y incluye el file del idioma y le da el valor a la variable.
-Encambio si no llega por GET y la cookie no existe, lo toma automaticamente seleccionando los dos primeros caracteres del idioma del navegador, agrega el file y crea la cookie.

Entonces el problema: al iniciar la web no carga nada, si clicko y envio por get se carga el idioma pero al cambiar de pagina en las siguientes no hay ningun idioma definido. No se si el problema seran los if, o la creacion de la cookie.
Alguien tiene idea de que puede ser?
Desde ya muchas gracias por cualquier ayuda!
__________________
Bruno Quintana
  #2 (permalink)  
Antiguo 26/09/2011, 15:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas con cookies,multilenguaje y GET

Bueno, creo que la logica seria:

Código PHP:
Ver original
  1. if(isset($_GET['lang'])) {
  2.     $elidioma = $_GET['lang'];
  3. } else if(isset($_COOKIE['lang'])) {
  4.     $elidioma = $_COOKIE['lang'];
  5. } else {
  6.     // Aqui lo tomas del navegador
  7. }
  8. // Aqui verificas si $elidioma esta entre los permitidos en el sitio
  9. // Si no, entonces asignas el valor por default
  10.  
  11. // Creas la cookie con el idioma, para evitarte tener que incluirlo en URL
  12.  
  13. // Aqui haces tu switch
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: $_get, cookies, multilenguaje
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 19:54.