Foros del Web » Programando para Internet » PHP »

Problemasa con COOKIES, No Asigna a la Primera Carga de Pagina

Estas en el tema de Problemasa con COOKIES, No Asigna a la Primera Carga de Pagina en el foro de PHP en Foros del Web. Bueno Pido ayuda con este codigo que no se que me esta fallando. Paso a Describir mi problema, lo que pasa es que utilizo este ...
  #1 (permalink)  
Antiguo 17/10/2010, 15:49
Avatar de DjMiki  
Fecha de Ingreso: octubre-2007
Ubicación: Paijan - Trujillo - La Libertad
Mensajes: 90
Antigüedad: 16 años, 6 meses
Puntos: 2
Exclamación Problemasa con COOKIES, No Asigna a la Primera Carga de Pagina

Bueno Pido ayuda con este codigo que no se que me esta fallando.
Paso a Describir mi problema, lo que pasa es que utilizo este script, para verificar el idioma del usuario, pero resulta que al cargar no funciona nada,
Código PHP:
Ver original
  1. //Script en el Index
  2. require_once('funciones.php');
  3.  
  4. $lang=htmlentities($_GET['language']);
  5. $page=htmlentities($_GET['pages']);
  6.  
  7. // Verificar el Idioma
  8.  
  9. if($lang==""){
  10.     if($_COOKIE['lan']==""){
  11.         $lang = detectarIdioma();
  12.         setcookie('lan',$lang, time()+3600,'/','domain.com');
  13.     }
  14. }
  15. else{
  16.     setcookie('lan',$lang, time()+3600,'/','domain.com');
  17. }
  18. $file="idiomas/".$_COOKIE['lan'].".php";
  19. $imglang = "_".$_COOKIE['lan'];
  20. include($file);
  21.  
  22.  
  23. //Script en el archivo funciones.php
  24. function detectarIdioma(){
  25.  
  26.         //revisamos cabecera HTTP_ACCEPT_LANGUAGE
  27.         $idiomas = explode(";", $_SERVER['HTTP_ACCEPT_LANGUAGE']);
  28.         if(strpos($idiomas[0], "es") !== FALSE){
  29.         $idioma = "es";
  30.         }
  31.         elseif(strpos($idiomas[0], "en") !== FALSE){
  32.         $idioma = "en";
  33.         }
  34.  
  35.         //Ante cualquier otro idioma devolvemos "es"
  36.         if($idioma <> "es" && $idioma <> "en"){
  37.         $idioma = "en";
  38.         }
  39.         return $idioma;
  40.     }
Como se pudieron dar cuenta en el script utilizo esa COOKIE para almacenar alli el idioma y que todas las imagenes y textos se muestren deacuerdo al idioma que se escoga o al idioma del navegador, pero como les digo no se muestran eh aqui una imagen de muestra:


Es mas cuando Recargo la web, funciona todo, pero si luego de recargar escojo un idioma no afecta a la primera, tengo q recargar la pagina o abrir otro enlace dentro de la web.
Y no se cual sea mi problema, porfavor quisiera q me ayuden con este problema por que eh modificado muchas cosas e igual sigue pasando lo mismo, Espero su pronta Ayuda y Gracias de ANTEMANO.
  #2 (permalink)  
Antiguo 18/10/2010, 01:43
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problemasa con COOKIES, No Asigna a la Primera Carga de Pagina

Hola DJ, los dos ultimos parámetros de setcookie dan problemas, compruébalo a partir de esta versión comentada para debug:


Código PHP:
<?php

error_reporting
(E_ALL);
ini_set("display_errors",1);
//Script en el Index
//require_once('funciones.php');

$lang = (isset($_GET['language'])?htmlentities($_GET['language']):'undefined');
$page = (isset($_GET['pages'])?htmlentities($_GET['pages']):0);

// Verificar el Idioma

if($lang==""){
    if(
$_COOKIE['lan']==""){
        
$lang detectarIdioma();
        
setcookie('lan',$lang);
    }
}
else{
    
setcookie('lan',$lang);
    echo 
"Cookie vale ".$_COOKIE['lan']."<br>";
}

if(isset(
$_COOKIE['lan'])){
    
$file "idiomas/".$_COOKIE['lan'].".php";
    
$imglang "_".$_COOKIE['lan'];
    
//include($file);
}
print_r($_COOKIE);
echo 
"<h1>Lan vale $lang Cookie lan vale: ".$_COOKIE['lan']."</h1>";




//Script en el archivo funciones.php
function detectarIdioma(){

    
//revisamos cabecera HTTP_ACCEPT_LANGUAGE
    
$idiomas explode(";"$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    if(
strpos($idiomas[0], "es") !== FALSE){
        
$idioma "es";
    }
    elseif(
strpos($idiomas[0], "en") !== FALSE){
        
$idioma "en";
    }

    
//Ante cualquier otro idioma devolvemos "es"
    
if($idioma <> "es" && $idioma <> "en"){
        
$idioma "en";
    }
    return 
$idioma;
}

?>
saludos
  #3 (permalink)  
Antiguo 19/10/2010, 19:57
Avatar de DjMiki  
Fecha de Ingreso: octubre-2007
Ubicación: Paijan - Trujillo - La Libertad
Mensajes: 90
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: Problemasa con COOKIES, No Asigna a la Primera Carga de Pagina

Gracias "REPARA2", Gracias por tu respuesta, probe el script, pero tiene el mismo problema que el mio, no asigna a la primera, si yo ejecute el link desde el principio, no carga nada, si yo agrege un valor al parametro LANGUAGE, no asigna, y si Actualizo la pagina alli recien mostrara los datos asignados a la cookie, y no se el por que, lo probe en localhost y en host q tengo subido, aparte tambien alli tengo la web donde tuve problemas, puedes verificarlo en el archivo que tengo subido:
http://www.artekunturwasi.com/setcoo...hp?language=es

ahora en localhost funciona de cierta forma, al momento de imprimir me imprime bueno lo regular esto:

Código:
Array ( [lan] => en )
pero en la web pues, ahm velo tu mismo, es algo ahm bien raro, no se quizas sea problema del servidor.

Última edición por DjMiki; 19/10/2010 a las 20:03
  #4 (permalink)  
Antiguo 19/10/2010, 23:47
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problemasa con COOKIES, No Asigna a la Primera Carga de Pagina

ok, te entendí mal entonces. El script funciona correctamente, porque no puedes acceder al valor de una cookie hasta que recargas la página. Este es el comportamiento normal de PHP. Si necesitas un acceso inmediato planteate usar variables de session. Te paso unos apuntes de cookies
http://www.ignside.net/man/php/cookies.php
a ver si sirve, saludos
  #5 (permalink)  
Antiguo 20/10/2010, 09:43
Avatar de DjMiki  
Fecha de Ingreso: octubre-2007
Ubicación: Paijan - Trujillo - La Libertad
Mensajes: 90
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: Problemasa con COOKIES, No Asigna a la Primera Carga de Pagina

ahmmmmm ja
jep gracias por el alcance "REPARA2", no sabia sobre eso, pero algo hiba por alli mi deduccion sobre ese problema, y si eh pensado en hacerlo en sessiones, quizas lo aga pero tambien utilizando cookies.
Tu que dices seria recomendable?, o quizas solo agregando tiempo de vida a las sessiones.????
  #6 (permalink)  
Antiguo 20/10/2010, 09:48
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problemasa con COOKIES, No Asigna a la Primera Carga de Pagina

Yo prefiero sessiones ya que no dependes de la configuración del navegador ni del navegador en sí. Además el acceso es instantáneo. Las sessiones son más útiles para controlar el acceso, tiempo de vida de una session de usuario, etc.
Sin embargo, puedes utilizar las dos cosas, la implementación es casi idéntica, todo depende de tu proyecto.
1 saludo

Etiquetas: carga, cookies, primera, asignar
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:32.