Kjapp og trygg hosting for Wordpress

Sette cookie etter hvilket språk du har valgt.

halvors

New Member
Hei!

Jeg driver å lager et script som skal ligge i min index.php fil for å veolge å huske hvilket språk du skal ha.

Det skal linke til disse:

Engelsk: index.php?lang=en&page=home
Norsk: index.php?lang=no&page=home

Og dette scriptet får jeg ikke til å finke, problemet er at hvis du velger norsk så får du ikke endret tilbake til engelsk.

Tror scriptet setter ny cookie å da får du aldri endret språk.

Scriptet skal sjekke om cookie ved navn language er satt, hvis den er satt skal den sette variablen $language lik verdien av cookieen.
Eller hvis det ikke eksisterer noen cookie, skal den sende deg til engelsk.

Hvordan får jeg til dette?

Her er mitt script.

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");

Halvor.
 

michaelo

Medlem
Du har en logisk brist i den sjekken din, så hvis du prøver deg med en liten omskrivning i likhet med dette så skal det fungere bedre:

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

// Angir hvilke språk vi tillater
$allowed_langs = array("no", "en");

// Hvis satt via bruker
if(isset($_GET["lang"])) {
	$language = $_GET["lang"];
} else if(isset($_COOKIE["language"])) { // Hvis lagret i cookie
	$language = $_COOKIE["language"];
} else { // Fallback
	$language = "en";
}

// Hvis input-språk ikke er blandt de vi tillatter, sett en fallback
if(!in_array($language, $allowed_langs)) {
	$language = "en";
}

setcookie("language", $language, $expire);
include("language/$language.php");
 
Topp