Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/06/2010, 23:08
Avatar de destor77
destor77
 
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
sitio multilenguaje y cookie

Buenas, hace mas de un día que estoy renegando con un sitio multilenguaje y las cookies sin tener resultados, así que acudo a la ayuda del foro

La cuestión es así estoy creando un sitio cuya pagina de inicio son fotos de 3 banderas:
Código HTML:
Ver original
  1. <ul>
  2.     <li><a href="<?php echo 'en/'.$url->urlAmigables('index.php?controlador=inicio',1);?>" title="Enter"><img src="<?php echo $config->get('template')?>/images/United-Kingdom.png"  alt="Enter" width="78" height="78" /></a></li>
  3.     <li><a href="<?php echo 'es/'.$url->urlAmigables('index.php?controlador=inicio',1);?>" title="Entrar"><img src="<?php echo $config->get('template')?>/images/Spain.png"  alt="Entrar" width="78" height="78" /></a></li>
  4.     <li><a href="<?php echo 'fr/'.$url->urlAmigables('index.php?controlador=inicio',1);?>" title="Entre&eacute;"><img src="<?php echo $config->get('template')?>/images/France.png"  alt="Entre&eacute;" width="78" height="78" /></a></li>
  5.     </ul>
los link quedan asi:
http://xxxx/es/inicio.php
http://xxxx/en/inicio.php
http://xxxx/fr/inicio.php

la idea es que esta pagina se muestre 1 sola vez al usuario una vez que selecciona en que idioma la quiere ver, se guarda la seleccion en una cookie y cada vez que vuelve a entrar verifique si existe la cookie y lo redireccione a la version que habia seleccionado y quedo guardada en la cookie.

Bien para hacer esto intento usar el siguiente codigo:
Código PHP:
Ver original
  1. //cargo el lenguaje del sistema
  2.         if($config->get('multi')==1) {
  3.         $leng = Language::singleton();
  4.         $leng->get_session_handler();
  5.         $idiomaActual = $config->get('lenguaje');
  6.        
  7.         if(!empty($_GET['leng'])){
  8.             setcookie ("apolo_leng", $_GET['leng'],0,"/",dirname(__FILE__),0);
  9.         }
  10.         session_start();
  11.  
  12.         $_SESSION['leng'] = $idiomaActual;
  13.  
  14.         if(isset($_GET['leng']) && !isset($_COOKIE['apolo_leng'])) {
  15.             $idiomaActual = $_GET['leng'];
  16.             $_SESSION['leng'] = $_GET['leng'];
  17.             setcookie ("apolo_leng", $idiomaActual,0,"",dirname(__FILE__),0);      
  18.         }
  19.         elseif(isset($_COOKIE['apolo_leng'])) {
  20.             if(file_exists($config->get('root')."/lenguajes/".$_COOKIE['apolo_leng'].".php")) {
  21.             $idiomaActual = $_COOKIE['apolo_leng'];
  22.             $_SESSION['leng'] = $idiomaActual;
  23.             }
  24.         }
  25.         elseif(!isset($_COOKIE['apolo_leng']) && !isset($_GET['leng'])) {
  26.             if(file_exists($config->get('root')."/lenguajes/".$_SESSION['leng'].".php")) {
  27.             $idiomaActual = $_SESSION['leng'];
  28.             setcookie ("apolo_leng", $idiomaActual,0,"",dirname(__FILE__),0);
  29.  
  30.             }
  31.         }
  32.  
  33.         // Incluimos el archivo del idioma seleccionado
  34.         // o el archivo por defecto si no se seleccionó
  35.         // idioma o si no se encuentra el archivo
  36.         include $config->get('root')."/lenguajes/".$idiomaActual.".php";
  37.         }

cuando se entra por primera vez al sitio va a http://xxx/ y me muestra las 3 banderas. El problema esta que por ejemplo entro a la versión en frances y la cookie me guarda el valor "fr", pero si vuelvo a http://xxx/ se queda ahí como si no existiera la cookie, hago un print_r($_COOKIE) y lo unico que sale es:
Código:
Array
(
    [PHPSESSID] => 388de2710adb342ab4899998f64962b0
)
el codigo de la pagina de las banderas es:
Código PHP:
Ver original
  1. class indexController extends Controller {
  2.     public function index(){
  3.         if(isset($_COOKIE['apolo_leng'])){
  4.         $this->Utilidades->redirect($_COOKIE['apolo_leng'].'/inicio.php');
  5.         }
  6.         else{
  7.         $this->Vistas->show('index.html',$data);
  8.         }  
  9.     }  
  10. }
  11. ?>

ya estoy loco porque no se como solucionarlo, si alguien me puede dar una mano estaré eternamente agradecido.....