Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos estou fazendo um site pessoal mas em 3 idiomas, está funcionando bem mas quando está em uma determinada categoria ex: site.com/?pag=2⊂=3 e quando clico na bandeirinha da linguagem escolhida volta para o index site.com/index.php e não quero que isso aconteça.
OBS: Tanto com o form quanto com as imagens acontece a mesma coisa.
Alguém tem uma idéia do que possa estar acontecendo?
Desde já agradeço.
Segue o código:
index.php
<?php
include("config.php"); //Conexão com o BD
if(isset($_GET['lang']) && $_GET['lang'] != null){
$novoidioma = $_GET['lang'];
$path = "idiomas/".$novoidioma.".php";
if(file_exists($path)){
setcookie("idioma", $novoidioma, time()+(24*3600*30));
$arq = $_SERVER['PHP_SELF'];
$arq2 = explode("/", $arq);
$arq3 = end($arq2);
header("Location: $arq3");
}else{
echo "<script>alert('Este idioma não está disponível.');</script>";
}
}
if(isset($_COOKIE['idioma'])){
$idioma = $_COOKIE['idioma'];
$caminho = "idiomas/".$idioma.".php";
if(file_exists($caminho)){
include($caminho);
}else{
exit();
}
}else{
setcookie("idioma","portugues", time()+(24*3600*30));
include("idiomas/portugues.php");
}
?>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#lista").change(function(){
window.location = $(this).val()
})
})
</script>
<body>
<form id="form1" name="form1" action="">
<select name="lista" id="lista" class="button orange">
<?php
$idiomascds = mysql_query("SELECT nome,arquivo FROM idioma");
while($linha = mysql_fetch_assoc($idiomascds)){
$selected = ($_COOKIE['idioma'] == $linha['arquivo'] ? 'selected="selected"' : '');
?>
<option value="?lang=<?php echo $linha['arquivo']; ?>" <?php echo $selected?> ><?php echo $linha['nome']; ?></option>
<?php
}
?>
</select>
</form>
<p>
<?php
$idiomascds = mysql_query("SELECT nome,arquivo FROM idioma");
while($linha = mysql_fetch_assoc($idiomascds)){
$selected = ($_COOKIE['idioma'] == $linha['arquivo'] ? 'selected="selected"' : '');
?>
<?php
}
?>
<a href="?lang=portugues" rel="nofollow" id="lista"><img src="_img/br.png" width="40" height="40" border="0" /></a>
<a id="lista" href="?lang=ingles"><img src="_img/en.png" width="40" height="40" border="0" /></a>
</p>
<h1><? echo $lang['bemvindo'];?></h1>
portugues.php
<?php
$lang['bemvindo'] = "Bem vindo(a) ao site";
$lang['meubotao'] = "Meu Botão";
$lang['conteudo'] = "Conteúdo";
$lang['php'] = "Tutorial sobre PHP";
$lang['css'] = "Tutorial sobre CSS";?>Não, não use jquery para fazer isso. Cada ferramenta tem sua hora de ser usada.
Sinceramente, não li o código, porém o funcionamento é bem básico:
1 - Você grava numa variável de sessão a página que o usuário estava, ou deve visitar após a escolha da linguagem.
<?php
$_SESSION['paginaAtual'] = 'pagina.php';
...
?>
<a href="index.php?idioma=2">Espanhol</a>
2 - No inínio da página que faz o tratamento dos dados, que provavelmente é a sua index, antes de tudo você faz a verificação e já insere um redirecionamento, como assim:
<?php
session_start();
if ((int)$_GET['idioma']>0) {
$idiomaSite = array(1 => 'Portugues',
2 => 'Espanhol',
3 => 'Inglês');
if (array_key_exists($_GET['idioma'],$idiomaSite)) {
$paginaAlvo = ($_SESSION['url']!='') ? $_SESSION['url'].'?idioma='.$_GET['idioma'] : 'index.php';
header('Location: '.$paginaAlvo);
}
}
...
?>
Isso é só uma base/ideia das inúmeras possíveis. Basicamente, o que quis dizer, é que para que a página onde o usuário está esteja acessível após o tratamento dos dados, você precisa:
1 - Gravar a sessão com a URL ativa e pegar na página posterior.
2 - Usar algum sistema de Query String ou URLs amigáveis, onde todas as páginas tenham que passar pelo código de uma principal, e nesta se faria a verificação e nem precisaria redirecionar o usuário.
Acho que deu pra entender. Os códigos acima serviram apenas para te dar uma noção, não fiz baseado em nada, e provavelmente deve ter algum errinho ou outro que você teria que adaptar ao seu sistema.
Espero ter ajudado, até mais.
Edit: Caso queira pegar as variáveis da Query String e tratá-las também para formar a sua URL, você pode utilizar duas formas distintas:
1 - As variáveis globais $_SERVER do PHP ([http://php.net/manual/pt_BR/reserved.variables.server.php](http://php.net/manual/pt_BR/reserved.variables.server.php)), como $_SERVER['QUERY_STRING'] ou $_SERVER['REQUEST_URI'].
2 - Um loop de tratamento em todas as variáveis $_GET informadas pelo navegador, como no exemplo:
<?php
foreach ($_GET as $x => $y) {
echo $x.' = '.$y.'<br />';
}
?>
Utilizei echo ao invés de print_r para facilitar o entendimento.
Até mais.
Mesmo com este exemplo está retornando para o index.
Mesmo assim ainda não consegui resolver, deve ser coisa fácil mas mesmo assim não sei o q há.
Dê echo em todas as variáveis que envolvem o sistema. Verifique os cookies, verifique se o cookie antes de redirecionar a página é uma string contendo o endereço a ser redirecionado.
Até mais.
use JS
clica com jquery, e na pagina da consulta, você chama a pagina do idioma
depois do retorno basta da um refresh