Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BrunoVieira

[Resolvido] session_destroy

Recommended Posts

boas pessoal,

 

tenho uma uma duvida,

 

tenho no index.php um include('session.php');

 

no session.php tenho:

 

<?php
 session_start();
  $_SESSION["lang"] = "pt";

function lang_eng()
{
	session_destroy();
	
 session_start();
  $_SESSION["lang"] = "eng";

}
?>

 

a minha ideia era criar um link no index.php tipo eng onde este iria abrir function lang_eng() ficando assim $_SESSION["lang"] = "eng";

 

isto é possível?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, o que você pode fazer é algo assim...

 

<a href="session.php?lang=eng">English</a>

E no session.php, você pode fazer algo assim...

 

<?php
session_start();
$_SESSION['lang'] = isset($_GET['lang']) ? $_GET['lang'] : 'pt' ;
header('Location: index.php');
?>

O que estou fazendo. Caso seja clicado no link para mudar para inglês, vai enviar a $_GET['lang'] com o valor de eng, que vai ser atribuido à variável $_SESSION['lang']. Se não tiver nenhum valor da $_GET['lang'], vai ser atribuido 'pt' como padrão. O header vai redirecionar para a página inicial, já com a linguagem selecionada. Daí na index, você faz o teste para saber qual linguagem utilizar.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim desta forma deu logo,

 

estou fazendo no backoffice o script onde o cliente pode criar os bt's onde tenho um campo para o nome em PT e outro em eng

 

ex: nome_pt e nome_eng

 

e assim da para fazer na pesq a base de dados os campos nome_ e conforme a session ele vai apanhar o pt ou o eng.

 

axas que é numa boa assim, ou estou a fazer um grande filme?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É uma alternativa. Tem outras, mas a sua é válida. Uma delas seria criar tabelas separadas (uma para PT e outra para ENG)(mais recomendada). Outra opção (menos recomendada) seria criar somente um campo na tabela contendo a lingua, com tipo ENUM('pt','eng'). Na hora de consultar, você adiciona na cláusula WHERE a condição para só exibir os dados da língua escolhida (pt ou eng).

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu faria. Criaria 2 tabelas ou o campo a mais na tabela, como eu falei. Por padrão, pelo código que você colocou, vai ser em pt. Se o cara clicar no link, vai mudar para eng. Aí a consulta ficaria mais ou menos assim.

 

SELECT * FROM tabela WHERE lang = $_SESSION['lang']

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

matias estive a ver agora e quando carrego em eng ele fica em eng mas depois carrego em menus e ele volta para pt ou seja nao esta a validar a session não é?

 

quanto a tabela, é mesmo isso que estou a fazer :D

 

meti um echo a session e ele volta a pt quando carrego em qualquer link

 

a unica forma é nos links meter sempre o 〈=<?php echo $_SESSION['lang']; ?>...

 

mas ao criar a session nao deveria de ficar guardado sempre o valor anterior?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que o código que eu passei faz isto mesmo. Teria que fazer diferente.

 

// aqui vemos se foi clicado no link. Se foi clicado no link, coloca $_SESSION['lang'] como o valor que ele clicou.
if(isset($_GET['lang']))
{
     $_SESSION['lang'] = $_GET['lang'];
}
// testamos se existe a $_SESSION['lang']. Se não existir, coloca como 'pt', ou seja, o padrão
if(!isset($_SESSION['lang']))
{
     $_SESSION['lang'] = 'pt';
}

Porque isto estava acontecendo? Porque toda vez que não tinha a $_GET['lang'], ele colocava $_SESSION['lang'] como 'pt'.

Agora deve funcionar.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.