14. april 2005 - 10:21Der er
3 kommentarer og 1 løsning
Sessions starter ikke med det samme
Hej,
Jeg har udviklet et site, hvor brugeren kan vælge imellem flere sprog. I toppen af min index side foretages automatisk et tjek af hvilket sprog der er standard, så det vises - eksempelvis dansk.
Mit problem er, at jeg skal klikke på noget eller trykke F5 før siden fanger det valgte sprog, og dermed kan hente teksterne til siden fra databasen. Med andre ord - sitet er tomt, når man klikker sig ind på det, indtil man "har gjort noget".
Hvordan kan man løse det problem?
Her er koden fra min index fil, der foretager check: <? session_start(); // Tjekker hvilke moduler der er aktive include("admin/connect.php"); $q_moduler = mysql_query("SELECT * FROM moduler WHERE aktiv = '1'"); while($modul_ja_nej = mysql_fetch_assoc($q_moduler)) { $_SESSION[$modul_ja_nej['modulnavn']] = 1; } mysql_close($connection);
// Skifter sprog på basis af brugerens valg if(isset($_GET[lang])) { $_SESSION['vis_sprog'] = $_GET[lang]; }
// Henter shoptekster fra tabellen på basis af sproget if($_SESSION[sprog] == '1') { include("admin/connect.php"); $q_shoptekster = mysql_query("SELECT * FROM shoptekster WHERE sprog = '$_SESSION[vis_sprog]'"); $shoptekster = mysql_fetch_assoc($q_shoptekster); mysql_close($connection); }
Jeg ville lave mig et array med mulige sprogtyper, og derefter først tjekke om $_GET["lang"] er sat, og findes i array'et, og er de tsandt, sætte session, og ellers sætte session til "default"
Og forstår ikke lige din if($_SESSION[sprog] == '1') {
Ha! Nu fandt jeg ud af det - det hjalp at få det herop på skærmen og se koden på en anden måde. Problemet var, at $_SESSION[vis_sprog] (der indeholder id'et for det sprog der skal vises) ikke er sat i starten. Det gør jeg nu - se her:
<? session_start(); // Tjekker hvilke moduler der er aktive include("admin/connect.php"); $q_moduler = mysql_query("SELECT * FROM moduler WHERE aktiv = '1'"); while($modul_ja_nej = mysql_fetch_assoc($q_moduler)) { $_SESSION[$modul_ja_nej['modulnavn']] = 1; } mysql_close($connection);
// Skifter sprog på basis af brugerens valg if(isset($_GET[lang])) { $_SESSION['vis_sprog'] = $_GET[lang]; }
// Henter shoptekster fra tabellen på basis af sproget if($_SESSION[sprog] == '1') { include("admin/connect.php"); if($_SESSION[vis_sprog] == '') { $sprog = '1'; $_SESSION[vis_sprog] = '1'; } else { $sprog = $_SESSION[vis_sprog]; } $q_shoptekster = mysql_query("SELECT * FROM shoptekster WHERE sprog = '$sprog'"); $shoptekster = mysql_fetch_assoc($q_shoptekster); mysql_close($connection); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.