webForumDet fria alternativet

Uppdatera/ändra cookie?

PHP

6 svar · 424 visningar · startad av wyndan

Medlem sedan okt. 200450 inlägg
Frågan#1

Tjena!

Vill göra min hemsida på två språk så användare kan växla mellan svenska och engelska, och använda cookies som lagrar vad användaren har valt.

Problemet är att jag redan lagrar en cookie som kommer ihåg vilken css(färgtema) avändaren har valt... så kan man uppdatera cookien så den lagrar både färgtemat och språket?

Eller finns det ett annat smidigare/enklare sätt att låta användaren välja språk?

Scriptet som sätter färgtema-cookien ser ut så här:
styleswitcher.js

/Andreas

Medlem sedan juni 2002346 inlägg
#2

ja, cookien kan ha flera val i cookien.

t.ex setcookie('lang', $_GET['lang'], (time()+2592000), '/', '', 0);

där $_GET['lang'] är kanske en eller sv. Sen kan du kolla mot cookien och om den är inställd på sv så väljer den en svensk språkfil och om det är en så väljer den en engelsk språkfil.

Medlem sedan juni 20006 031 inlägg
#3

En cookie kan bara ha ett värde

setcookie("namn", "värde", "tid", "mapp", "domän", "säkerhet");

Så du får nog sätta två cookies, en för språk och en för tema.

Medlem sedan okt. 20001 285 inlägg
#4

Du kan lägga in flera värden .. t.ex separera dom med en pipe och sen köra explode på cookien

$sdata = $_GET['lang']."|".$_GET['style'];
setcookie('settings', $sdata, (time()+2592000), '/', '', 0);

// --------------------------------------------------------------

$prefs = explode("|", $_COOKIE['settings']);

echo $prefs[0]; // är då " sv " och 
echo $prefs[1]; // är t.ex " green "
Medlem sedan mars 20025 907 inlägg
#5

Fuel skrev:

Du kan lägga in flera värden .. t.ex separera dom med en pipe och sen köra explode på cookien

Det går, men varför krångla till det så!? Kör på två cookies istället, användaren kommer säkerligen inte klaga :) CSS-scriptet döper sin cookie till "style" så du kan väl döpa språkcookien till "language" eller något annat lämpligt.

Medlem sedan okt. 200450 inlägg
#6

tack för hjälpen! funkar finfint.. fast min kod känns lite som av ett fulhack..

<?php
$lang = $_GET['lang'];
if ($lang == "sv"){
	 		 setcookie('lang',"sv",(time()+2592000));
			 if ($_SERVER['HTTP_REFERER'] == "http://www.funnygames.se/main.php"){
			 		$href = "start.php";
					}
			 else if ($_SERVER['HTTP_REFERER'] == "http://www.funnygames.se/links.php"){
			 		$href = "lankar.php";
					}					
			 else if ($_SERVER['HTTP_REFERER'] == "http://www.funnygames.se/about_us.php"){
			 		$href = "om_oss.php";
					}
			 else if ($_SERVER['HTTP_REFERER'] == "http://www.funnygames.se/advertise.php"){
			 		$href = "annonsera.php";
					}
			 else if ($_SERVER['HTTP_REFERER'] == "http://www.funnygames.se/search.php"){
			 		$href = "sok.php";
					}
			 else{
			 		$href="start.php";
					}
}

å sen motsvarande för engelska..
borde väl gå å lösa på ett smidigare sett?

Medlem sedan juni 2002346 inlägg
#7

jag förstår inte riktigt din kod. Om adressfältet är http://www.funnygames.se/main.php så öppnas main.php med svensk text?

man kan göra något i den här stilen:

// om ett värde för getten lang anges så skapas en cookie med värdet.
if ($_GET['lang']) {
    setcookie('lang', $_GET['lang'], (time()+2592000), '/', '', 0);
}

// om ett värde för cookien lang finns så sätts variablen $lang till det, annars är standard sv.
if ($_COOKIE['lang']) {
    $lang = $_COOKIE['lang'];
} else {
    $lang = "sv";
}

/* 
alla språkfiler finns i en mapp med ett namn t.ex lang_sv.php

om filen existerar så includas språkfilen annars säger sidan att filen saknas. 
*/

$langfile = "languages/lang_" . $lang . ".php";
if (file_exists($langfile)) {
    include $langfile;
} else {
    echo "language file missing!";
    exit;
}

i lang_<prefix>.php så definerar man arrays etcetera.
t.ex

$_LANG['YES'] = "Ja";
$_LANG['NO'] ="No";

När den includeras så ersätts alla $_LANG['YES'] och $_LANG['NO'] på sidan.

OBS! Det här fungerar bara på statisk text.

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)