nyelvválasztás probléma
Sziasztok
A következő problémám lenne: ha a nyelvet kiválasztom az oldalon ( www.xxx.hu/en, www.xxx.hu/hu ) eltűnik a /hu, /en...
ezáltal linkelni sem tudok az adott nyelvre " www.xxx.hu/hu/bemutatkozas/cegunkrol " adom meg, akkor nem a magyar oldal jelenik meg...hanem az alapértelmezett angol.
a kód a következő:
■ A következő problémám lenne: ha a nyelvet kiválasztom az oldalon ( www.xxx.hu/en, www.xxx.hu/hu ) eltűnik a /hu, /en...
ezáltal linkelni sem tudok az adott nyelvre " www.xxx.hu/hu/bemutatkozas/cegunkrol " adom meg, akkor nem a magyar oldal jelenik meg...hanem az alapértelmezett angol.
a kód a következő:
$lang = $site->actlanguage;
if (empty($p_one)) $p_one = "company";
if (!in_array($p_one, $allow) and !empty($p_one))
{
$sql = "SELECT * FROM menu WHERE (link1='$p_one' AND link2='$p_two' AND link3='$p_three' AND link4='$p_four')";
$selmenu = $site->db->GetRow($sql);
if (count($selmenu)==0) header("Location: /");
}
switch ($p_one)
{
case "hu":
case "de":
case "en":
$_SESSION['language'] = $p_one;
header("Location: /");
break;
kérdések, kérdések és kérdések
A $p_one változó micsoda? (nyelv nem lehet, mert nem hallottam még olyan nyelvről, hogy 'company'.
Ne csodálkozz ha eltűnik a nyelv az url-ből, ha te magad tünteted el: header("Location: /");
A location header kiadása nem jelenti az automatikus átirányítást, a script többi része lefut, így könnyen lehet, hogy nem az fog történni amit várnál. Ha nem szeretnéd futtatni a kód további részét, akkor használd az exit() függvényt a header után. Ha nem ez a cél, akkor természetesen nem szóltam :)
Re:
if (empty($p_one)) $p_one = "company"; - alapértelmezettként a "company"-t hozza be :-)
$p_one, $p_two stb... az aloldalakat jelöli
actlanguage pedig a smartyban is jelen van:
Nem könnyíted meg
Erre rájöttem ám... Csak arra próbáltam célozni, hogy kevered a szezont a fazonnal. Az eredeti kódrészletben néhány sorral a $p_one = "company" értékadás után a nyelvet ellenőrzöd a $p_one változó alapján... Ugyanakkor szerepel a kódodban egy $lang változó amit nem használsz, egy $_SESSION['language'] amit használsz ugyan csak nem tudom mire (az, hogy értékül adod egy osztályváltozónak az még nem felhasználás). Felteszem átadod a template-nek (ami azért lenne gyönyörű, mert a session-ben tárolt változókhoz automatiksan hozzáférsz a template-ből)... Meg van még $this->actlanguage is, ami ugyanaz mint a $_SESSION['language']... Miért?
Szerinted ezzel a kijelentéseddel segítesz?
Az derült ki, hogy a $_SESSION['language'] belemegy elsőként a az osztályod actlanguage változójába, amit később átpakolsz a $lang változóba és elfelejted (gondolom sok a memória, ezért pazarolni kell keveset), mert helyette inkább a $p_one-t nézed ami lehet 'company' vagy 'hu', 'en', 'de' és még bármi, a switch folytatódik a gépeden.
$p_xxx az aloldalakat jelöli, ok. Honnan kap értéket? tegyük fel az url-ből. Ha $p_one valamilyen nyelvet jelöl, akkor location=/
paraméterek nélkül, így ha a kódodat egy controller-ből (sic!) idézed akkor ez a feltétel...
...teljesülni fog, mert $p_one üres...
rögtön ezután:
Innen nem tudom tovább futtatni, premature end of file.
Re: Re:
Kicsit belekeveredtem... :-) De még tovább próbálkozom...
Köszönöm a segitséged!