Kjapp og trygg hosting for Wordpress

Hvordan sette cookie etter hvilket språk bruker velger?

halvors

New Member
Hei!

Jeg her et språkvalg på nettsiden, der du kan velge hvilket språk du vil se:

$expire=time()+60*60*24*30;
if($language=="en") {
echo '<a href="index.php?lang=no&page=home"><img src="images/no.jpg" border="0" width="25" height="15"></a>';
setcookie("language", "no", $expire);
}
else
{
echo '<a href="index.php?lang=en&page=home"><img src="images/en.jpg" border="0" width="25" height="15"></a>';
setcookie("language", "en", $expire);
}
?>

Vet at dette scriptet ikke fungerer men dere skjønner meningen, at når du klikker på norsk skal det lages en cookie som har verdi language som har verdi no og det samma med engelsk.

Hvordan får jeg dette skriptet til å virke?

Å hvordan får jeg skjekket cookie'en i index.php, jeg har nå dette skriptet:

if(isset($_GET) && isset($_GET['lang']) && $_GET['lang']=="en") {
$language="en";
}
elseif(isset($_GET) && isset($_GET['lang']) && $_GET['lang']=="no") {
$language="no";
}
else {
$language="en";
}
include("language/$language.php");

altså hvis du har klikket på norsk i det øverste skriptet skal du få norsk språk (index.php?lang=no&page=home)

Tusen takk for all hjelp :)

Halvor.
 
Mener å huske at cookies er headerinformasjon og derfor må settes FØR du sender output til nettleseren i det hele tatt. Ta setcookie ut av den if-en der og putt den i en egen if helt øverst i dokumentet -- før <html> og doctype declaration -- og sjansene for at den skal virke vil iallefall øke.
 
Med de modifikasjonene jeg nevner bør det eksisterende scriptet ditt allerede fungere fint til dette:

Kode:
$expire=time()+60*60*24*30;
if($language=="no") {
setcookie("language", "no", $expire);
}
else
{
setcookie("language", "en", $expire);
}

Når det gjelder hvordan finne ut hvilket språk som ligger i cookien, bruker du $_COOKIE til dette:

Kode:
if ((isset($_GET) && isset($_GET['lang']) && $_GET['lang']=="no") || (isset($_COOKIE) && isset($_COOKIE['language']) && $_COOKIE['language'] == "no")) {
$language="no";
}
else {
$language="en";
}
include("language/$language.php");

EDIT: Når jeg ser nærmere på koden, ser jeg at disse kodesnuttene ikke kan brukes på denne måten *i kombinasjon*, ettersom rekkefølgen man lagrer ting i blir helt feil. Da er det bedre å gjøre det slik:

Kode:
$expire=time()+60*60*24*30;

if ((isset($_GET) && isset($_GET['lang']) && $_GET['lang']=="no") || (isset($_COOKIE) && isset($_COOKIE['language']) && $_COOKIE['language'] == "no")) {
setcookie("language", "no", $expire);
$language="no";
}
else {
setcookie("language", "en", $expire);
$language="en";
}
include("language/$language.php");
 
Sist redigert:

halvors

New Member
Hei!

Prøvde og legge dette in i starten av index.php, men det finker bare halvveis.

Hvis jeg går inn på nettsiden (på engelsk somer standard) å klikker på norsk lages det en cookie, og så har nettsiden norsk språk, men hvis jeg killer på engelsk etter at cookie er satt, endrer ingen ting seg.

Hvordan få jeg fiksa det??

Her er scriptet:

---START---

if((isset($_GET) && isset($_GET['lang']) && $_GET['lang']=="no") || (isset($_COOKIE) && isset($_COOKIE['language']) && $_COOKIE['language']=="no")) {
$language="no";
}
else {
$language="en";
}
include("language/$language.php");

$expire=time()+60*60*24*30;
if($language=="no") {
setcookie("language", "no", $expire);
}
else {
setcookie("language", "en", $expire);
}

---SLUTT---

Halvor.
 

halvors

New Member
Slik:

---START---
ob_start();

if ((isset($_GET) && isset($_GET['lang']) && $_GET['lang']=="no") || (isset($_COOKIE) && isset($_COOKIE['language']) && $_COOKIE['language'] == "no")) {
$language="no";
}
else {
$language="en";
}
include("language/$language.php");

$expire=time()+60*60*24*30;
if($language=="no") {
setcookie("language", "no", $expire);
}
else
{
setcookie("language", "en", $expire);
}
ob_end_flush();

---SLUTT---

Eller i starten av index.php?
 

halvors

New Member
Får ikke scriptet til å funke.

Hva gjør jeg, hva er feil med den koden over (den ligger i toppen av index.php)
 
Sist redigert:
Topp