Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
para a tradução personalizada de um site,
estava usando session, até que descobrí
que ela não funciona direito no firefox (não imagino pq), já que funcionava perfeitamente bem na droga do IE 8 e >
então coloquei cookie
<?php
header("Content-Type: text/html; charset=iso-8859-1");
if(!isset($_COOKIE["language"])) {
setcookie("language", "pt", time() + 3600 * 24 * 30);
//existem 3 linguagens pt, en, fr
} else
{
$lng = $_COOKIE["language"];
}
include("resources/lng/tradutor.php");
// segue o script, com ajax, etc...
quando o usuario seleciona o idioma em <a href="#">pt</a>,
na página index.php
tem
// parte do código ajax (onde o id) tem o nome da página a ser aberta.
switch(id)
{
case "en":
case "fr":
case "es":
case "pt":
$('#conteudo').load("resources/lng/"+ id + ".php");
location.reload();
}
linka para
<?php
//pt.php
setcookie("language", "pt", time() + 3600 * 24 * 30);
?>
tudo executa...
exceto
ler o valor do cookie.
agradeço se tiver alguma orientação,
pois meu único neurônio já tá desnorteado.
Quem foi que disse que session não funciona com Firefox??
Session é server-side e usa os mesmos cookies que você está tentando implementar.
>
aqui você criou a variavel:
$lng = $_COOKIE["language"];
mas onde você usa ela ?
em outro script.
<?php
header("Content-Type: text/html; charset=iso-8859-1");
function gText($pWord)
{
$retornar="";
$lng = $_SESSION['idioma'];
switch ($lng)
{
case "pt":
switch ($pWord)
{
case "sobre": $retornar = "SOBRE"; break;
case "celso": $retornar = "MSc. Celso"; break;
case "basica": $retornar = "Matemática Básica";break;
case "financeira": $retornar = "Matemática Financeira";break;
}
case "en":
switch ($pWord)
{
case "sobre": $retornar = "ABOUT US"; break;
case "celso": $retornar = "MSc. Celso"; break;
case "basica": $retornar = "Elementar Math"; break;
case "financeira": $retornar = "Financial Math"; break;
}
}
echo $retornar;
}
?>mas ali em cima, é um COOKIE, e aqui você usa session:
$lng = $_SESSION['idioma'];
lembre-se que para usar SESSIONs, você tem q declarar um session_start() no inicio de cada arquivo php que for manipula-las.
>
Quem foi que disse que session não funciona com Firefox??
Session é server-side e usa os mesmos cookies que você está tentando implementar.
search
php session firefox bug
tem alguma coisa de não salvar corretamente os arquivos de sessões no servidor.
xD
eu não procurei isto, procurei informações sobre "erros em sessões php", mas começei a encontrar muita informação
sobre bugs no firefox,
e como meu script estava rodando 100% no IE, e ao testar no firefox, as sessões não funcionaram
achei que as informações sobre o bug estejam corretas.
além do mais,
por sorte o google não gasta, pois gastei longas horas
lendo sobre sessões no php, e
não achei erros.
até o script básico de sessões no php net br, rodei e não reconheceu sessões...
será que pode ser alguma coisa do jquery?
uso ele pra não ler os arquivos e redenrizar (traduzido) nas divs.
já não sei o que ler a respeito.
>
google
search
php session firefox bug
Só li m*...
De qualquer forma: http://henriquebarcelos.in/blog/2011/11/20/sessoes-em-php-erros-comuns/
>
tem alguma coisa de não salvar corretamente os arquivos de sessões no servidor.
xD
eu não procurei isto, procurei informações sobre "erros em sessões php", mas começei a encontrar muita informação
sobre bugs no firefox,
e como meu script estava rodando 100% no IE, e ao testar no firefox, as sessões não funcionaram
achei que as informações sobre o bug estejam corretas.
além do mais,
por sorte o google não gasta, pois gastei longas horas
lendo sobre sessões no php, e
não achei erros.
até o script básico de sessões no php net br, rodei e não reconheceu sessões...
será que pode ser alguma coisa do jquery?
uso ele pra não ler os arquivos e redenrizar (traduzido) nas divs.
já não sei o que ler a respeito.
Abra a página que deveria ter a sessão ativa, pressione CTRL + ALT + J, escreva: document.cookie e poste a resposta.
>
Só li m*...
De qualquer forma: http://henriquebarcelos.in/blog/2011/11/20/sessoes-em-php-erros-comuns/
Abra a página que deveria ter a sessão ativa, pressione CTRL + ALT + J, escreva: document.cookie e poste a resposta.
ai,ai,ai,ai...
não resulta em nada CTRL+ALT+J, de qualquer forma o firebug não mostra erro algum (exceto alguns avisos no css referente a -moz......)
evandro meu santo!
eu realmente preciso me curvar ao inexplicável.
minimizei todo o site, ou seja... deixei ao básico, para encontrar respostas,
e não as encontrei.
o caso é que RODA no IE e NÃO RODA NO F14.
nem coloquei a função de tradução, pois esta simples rotina de 30 linhas, roda em um browser(IE8) e não roda no outro (F14).
então vou colocar aqui, inteirinho... pensei em zipar e colocar no site de um amigo, mas melhor postar direto aqui...
se quiser testar e me apontar alguma possível solução, seguramente, ficarei boquiaberto.
index.php
<?php
session_start();
if (!isset($_SESSION['teste'])){
$_SESSION['teste']='pt';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br">
<head>
<title>teste</title>
<link rel="shortcut icon" href="/favicon.ico" />
<script src="Nova pasta/resources/jquery/jquery-1.7.2.js"></script>
</head>
<script>
$(document).ready(function () {
$('#a').load("pag1.php");
$('#b li').click( function() {
id = $(this).attr("id");
nome = $(this).attr("name");
abrepagina = id +".php";
switch(id)
{
case "um":
case "dois":
$.ajax({type: "GET",
url: "troca.php",
data: "lng=" + nome ,
success: function(data) {}
});
$('#a').load("pag1.php");
break;
default:
$('#a').load("pag1.php", function(){
});
};
});
});
</script>
<body>
<div id="a"></div>
<div id="b">
<ul>
<li id="um" name="pt"><a href="#">um</a></li>
<li id="dois" name="en" ><a href="#">dois</a></li>
</ul>
</div>
</body>
<?php
//troca.php
session_start();
$recebe = $_GET['lng'];
$_SESSION['teste']= $recebe;
session_commit();
?>
<?php
//pag1.php
session_start();
$result = $_SESSION['teste'];
echo $result;
?>https://www.dropbox.com/s/b2xvqbenjlmg4xl/screencast.mp4
Note que o primeiro clique falha, muito provavelmente por causa de caching. Mas que funciona, funciona.
aqui você criou a variavel:
$lng = $_COOKIE["language"];
mas onde você usa ela ?