07. september 2004 - 15:51
Der er
25 kommentarer og 1 løsning
Sprog script virker ikke mere
Jeg har et sprog script, hvor man kan ændre sprog ved at lave f.eks. URL til main.php?sprog=da Men hvorfor virker dette ikke på nogle servere? er der noget der skal ændres mht. GLOBALS? Script: <? if($sprog == "da" || $sprog == "en") { setcookie("languageCookie", $sprog); $languageCookie = $sprog; } if ($languageCookie == "en" || $languageCookie == "da") $language = $languageCookie; else if ($HTTP_ACCEPT_LANGUAGE == "en") $language = $HTTP_ACCEPT_LANGUAGE; else if ($HTTP_ACCEPT_LANGUAGE == "da") $language = $HTTP_ACCEPT_LANGUAGE; else $language = "en"; if ($language == 'en') { include "main_en.php"; } if ($language == 'da') { include "main_da.php"; } ?>
Annonceindlæg fra Sabio
07. september 2004 - 15:55
#1
Brug f.eks.: if ($_COOKIE['languageCookie'] == "en" || $_COOKIE['languageCookie'] == "da") $language = $_COOKIE['languageCookie']; osv...
07. september 2004 - 15:55
#2
Ja, det er et godt bud. Prøv at indsætte dette foroven: $sprog = $_GET['sprog'];
07. september 2004 - 15:56
#3
07. september 2004 - 17:08
#4
ok, det ser et eller andet sted ud til at virke bedre... Men hvorfor skifter den først sprog når jeg reloader siden? Altså jeg har sådan en SELECT box som nedenfor, men den skifter først sprog når jeg klikker på F5... Hvad kan jeg gøre? <FORM method="GET" action="main.php"> <SELECT CLASS="but" style="width:150px" name="sprog" onchange="this.form.submit()"> <option value="">Change language</option> <option value="en">English</option> <option value="da">Danish</option> </SELECT> </FORM>
07. september 2004 - 17:32
#5
Man må da kunne gøre et eller andet?? Min side skifter fint nok, når jeg vel og mærket klikker F5... (eller videre på siden)
07. september 2004 - 18:17
#6
Hvis du har lavet den ændring coderdk foreslår, er det korrekt at du skal reloade. Du kan først tjekke en cookie når du har reloadet.
07. september 2004 - 18:23
#7
Skal jeg så undvære hans ændring og kun køre med din? kan man ik lave et eller andet smart så den kan skifte med det samme? f.eks. med session? Før i tiden kunne det script godt skifte med det samme...
07. september 2004 - 18:24
#8
Så du burde kunne lave det i den her stil: <? if (isset($_COOKIE["languageCookie"])) { $languageCookie = $_COOKIE["languageCookie"]; } elseif(isset($_GET["sprog"])) { setcookie("languageCookie", $_GET["sprog"]); $languageCookie = $_GET["sprog"]; } if ($languageCookie == "en" || $languageCookie == "da") $language = $languageCookie; else if ($HTTP_ACCEPT_LANGUAGE == "en") $language = $HTTP_ACCEPT_LANGUAGE; else if ($HTTP_ACCEPT_LANGUAGE == "da") $language = $HTTP_ACCEPT_LANGUAGE; else $language = "en"; if ($language == 'en') { include "main_en.php"; } if ($language == 'da') { include "main_da.php"; } ?>
07. september 2004 - 18:25
#9
Eller måske skal du bytte rundt på de to første if/elseif alt efter hvad du vil tjekke først.
07. september 2004 - 18:26
#10
Okay, hvis jeg undværer de ændringer som coder sendte, og tilføjer dine detox, så virker det fint.. men så sætter den vel ingen cookie?
07. september 2004 - 18:26
#11
Altså: if(isset($_GET["sprog"])) { setcookie("languageCookie", $_GET["sprog"]); $languageCookie = $_GET["sprog"]; }elseif (isset($_COOKIE["languageCookie"])) { $languageCookie = $_COOKIE["languageCookie"]; }
07. september 2004 - 18:30
#12
yup det virker også fint... så sætter den en cookie?
07. september 2004 - 18:34
#13
Ja, må jeg anbefale dig at skifte de 4 linjer: else if ($HTTP_ACCEPT_LANGUAGE == "en") $language = $HTTP_ACCEPT_LANGUAGE; else if ($HTTP_ACCEPT_LANGUAGE == "da") $language = $HTTP_ACCEPT_LANGUAGE; til: else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == "en") $language = $HTTP_ACCEPT_LANGUAGE; else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == "da") $language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
07. september 2004 - 18:35
#14
Skulle selvfølgelig være: else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == "en" || $_SERVER['HTTP_ACCEPT_LANGUAGE'] == "da") $language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
07. september 2004 - 18:37
#15
Dette ik godt nok? <? if(isset($_GET["sprog"])) { setcookie("languageCookie", $_GET["sprog"]); $languageCookie = $_GET["sprog"]; }elseif (isset($_COOKIE["languageCookie"])) { $languageCookie = $_COOKIE["languageCookie"]; } if ($languageCookie == "en" || $languageCookie == "da") $language = $languageCookie; else if ($HTTP_ACCEPT_LANGUAGE == "en") $language = $HTTP_ACCEPT_LANGUAGE; else if ($HTTP_ACCEPT_LANGUAGE == "da") $language = $HTTP_ACCEPT_LANGUAGE; else $language = "en"; if ($language == 'en') { include "main_en.php"; } if ($language == 'da') { include "main_da.php"; } ?>
07. september 2004 - 18:42
#16
Jo måske, jeg vil bare råde dig til at bruge: $_SERVER['HTTP_ACCEPT_LANGUAGE'] istedet for: $HTTP_ACCEPT_LANGUAGE. Og så skal du være obs på at cookie kun holder under selve sessionen når du ikke sætter tid på den.
07. september 2004 - 18:47
#17
Skal den fx virke 1 time, skal den se sådan ud: setcookie("languageCookie", $_GET["sprog"], time()+3600); eller 1 år: setcookie("languageCookie", $_GET["sprog"], time()+(3600*24*365));
07. september 2004 - 18:48
#18
ok, det lyder helt fint.. men hvorfor så have cookie på når den bliver slettet alligevel?
07. september 2004 - 18:49
#19
Næ, normalt sætter man osse en tidsbegrænsning på dem.
07. september 2004 - 18:55
#20
Kan du lave scriptet uden cookie?
07. september 2004 - 18:55
#21
-bare med session?
07. september 2004 - 19:03
#22
Ja, det kan du sagtens, hvis det alligevel bare skal holde under selve sessionen. <? session_start(); if(isset($_GET["sprog"])) { $_SESSION['language'] = $_GET["sprog"]; $slanguage = $_GET["sprog"]; }elseif (isset($_SESSION['language'])) { $slanguage = $_SESSION['language']; } if ($slanguage == "en" || $slanguage == "da") $language = $slanguage; else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == "en") $language = $_SERVER['HTTP_ACCEPT_LANGUAGE']; else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == "da") $language = $_SERVER['HTTP_ACCEPT_LANGUAGE']; else $language = "en"; if ($language == 'en') { include "main_en.php"; } if ($language == 'da') { include "main_da.php"; } ?>
07. september 2004 - 19:05
#23
Så skal du bare huske: session_start(); på alle sider.
07. september 2004 - 19:06
#24
07. september 2004 - 19:35
#25
Tusinde tak skal du have detox :)
07. september 2004 - 19:48
#26
Velbekommen
Vi tilbyder markedets bedste kurser inden for webudvikling