Avatar billede steenolsen1 Nybegynder
14. april 2005 - 10:21 Der 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);
}
Avatar billede sukos Juniormester
14. april 2005 - 10:45 #1
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') {

Laver du så'n en ved hvert sprog?
Avatar billede steenolsen1 Nybegynder
14. april 2005 - 13:17 #2
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);
}
Avatar billede steenolsen1 Nybegynder
14. april 2005 - 13:38 #3
Der var jeg alligevel lidt hurtig... Så snart jeg klikkede på det engelske flag forsvandt muligheden for at vælge sprog for brugeren...

Nu fungerer det:
<?
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') {
    if($_SESSION[vis_sprog] == '') {
        $_SESSION[vis_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);
}
Avatar billede steenolsen1 Nybegynder
14. april 2005 - 13:58 #4
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester