João Melo 1 Denunciar post Postado Setembro 13, 2010 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";?> Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Setembro 13, 2010 use JS clica com jquery, e na pagina da consulta, você chama a pagina do idioma depois do retorno basta da um refresh Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Setembro 13, 2010 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), 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. Compartilhar este post Link para o post Compartilhar em outros sites
João Melo 1 Denunciar post Postado Setembro 13, 2010 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á. Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Setembro 13, 2010 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. Compartilhar este post Link para o post Compartilhar em outros sites