Avatar billede webweaver Praktikant
27. oktober 2007 - 19:38 Der er 22 kommentarer og
1 løsning

Problemer med sessions og variabler

Hej folkens.

Mit login driller mig. Jeg bruger sessions og har en config.php fil som bliver included med forskellige info ...

Jeg skal oprette en session med en angivet værdi via en variabel.
Kan man ikke det af en eller anden mystisk grund?

$_SESSION[$session_id] = 1; burde vel være muligt?

Den logger ikke ind når jeg gør det sådan, men hvis jeg i stedet for skriver værdien direkte i linien, virker det fint.

Jeg kan dog godt udskrive sessionen med variabel. Men logge ind vil den sku ikke. Den står bare og tænker, og til sidst kommer der en time out/siden kunne ikke vises.

Nogen idé om hvad jeg gør forkert?

Kan evt. poste noget kode-værk, hvis I ønsker.

Mvh. Lasse Jensen
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 20:22 #1
Hvad står der i din $session_id ?
Avatar billede webweaver Praktikant
27. oktober 2007 - 21:34 #2
Jeg henter noget data ind fra en DB...

while ($getData = mysql_fetch_array($query)) {
                       
        $getUsername = $getData['username'];
        $getPassword = $getData['password'];
        $getUrl = $getData['url'];
        $getSession_id = $getData['session_id'];
           
    }

    // Her bliver username og password tildelt variabelnavne.
    $login_username = $getUsername;
    $login_password = $getPassword;
   
    // Her angives rooth stien.
    $rooth = $getUrl;
   
    // Her angives der er uniks id til dette site.
    $session_id = $getSession_id;

.....
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 21:45 #3
Og samme $session_id findes på næste side?
Avatar billede webweaver Praktikant
27. oktober 2007 - 22:11 #4
Ja det er den.
Avatar billede webweaver Praktikant
27. oktober 2007 - 22:45 #5
Det er umiddelbart det som er mærkeligt, for jeg kan som sagt godt printe værdien ud på siden hvor jeg giver sessionen en værdi.
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 23:00 #6
Og som altid: session_start() på alle sider?  Men hvorfor give den et variabelt navn - det er yderst sjældent nødvendigt.
Avatar billede webweaver Praktikant
27. oktober 2007 - 23:08 #7
Fordi det er angivet i en database under oprettelse af et CMS. Et unikt session_id som naturligvis skal være ens på alle sider, og derfor bliver hentet ud af en database i config.php filen som derefter bliver included..

Jeps, session_start(); er med :)
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 23:11 #8
Men ... navnet på sessionsvariablen behøver som sagt yderst sjældent at være variabelt. Og jeg kan ikke se nogen grund til at den skulle være det her.

Men kan du indholdet af sessionsvariablen på den side du viser her, og ikke på den anden, så kunne det jo være, at fejlen er på den anden side ;)
Avatar billede webweaver Praktikant
27. oktober 2007 - 23:22 #9
Hvordan kan jeg ellers gøre det da? Kan ikke se andre metoder.
Jeg henter det jo ned i een fil. Men skal benytte mig af det i andre.

Selve sessionen bliver først oprettet når man logger sig ind. Og der bliver det så benyttet.

Jeg kan se variablen med echo og print på login-siden hvor jeg skal oprette sessionen. Men så snart jeg smider min variabel ind i sessionen, så vil den ikke logge ind.
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 23:26 #10
Hvis du skal bruge session_id på flere sider er den oplagte metode:

  $_SESSION['session_id']=$session_id;

og så de steder det skal bruges

  print $_SESSION['session_id']

eller tilsvarende. Og ja, jeg har forstået hvordan din fejl ytrer sig, men uden at se koden kan vi jo bare snakke løs som efterårskåde politikere ;)
Avatar billede webweaver Praktikant
27. oktober 2007 - 23:43 #11
Jamen sessionen skal ikke være = med session_id.

Det er bare sessionen som skal hedde det som $session_id indeholder. Værdien af sessionen er noget andet.

config.php:

http://pastebin.com/m567657d7

login.php:

http://pastebin.com/m66c44bc0
Avatar billede erikjacobsen Ekspert
27. oktober 2007 - 23:51 #12
"Det er bare sessionen som skal hedde det som $session_id indeholder."  -  det er noget vrøvl. Du har intet som helst ud af at dine sessions-variabler hedder noget forskelligt for forskellige brugere. Metoden, der vil give dig mindst bøvl, er givet 27/10-2007 23:26:45.
Avatar billede webweaver Praktikant
28. oktober 2007 - 00:29 #13
Er du sikker på det? Jeg syntes at kunne mindes at jeg loggede ind på et af mine systemer, og så gik jeg hen på en anden side som tilfældigvis benyttede sig af en session med samme navn, og dermed var jeg pludselig logget ind der også.

Det var såmænd derfor jeg egentlig ville lave det.
Avatar billede erikjacobsen Ekspert
28. oktober 2007 - 00:32 #14
Sessionsvariabler kan ikke deles mellem forskellige domæner.
Avatar billede webweaver Praktikant
28. oktober 2007 - 01:00 #15
Men godt imellem 2 CMS systemer på samme domæne f. eks?
Avatar billede erikjacobsen Ekspert
28. oktober 2007 - 01:08 #16
Ja.
Avatar billede erikjacobsen Ekspert
28. oktober 2007 - 01:08 #17
Men det løser du bare ved at kalde dem noget forskelligt:

$_SESSION['cms1_brugernavn']= ...
Avatar billede webweaver Praktikant
28. oktober 2007 - 01:13 #18
Det var det jeg ville ;)

Men det er ligemeget, for det er ikke tilfældet. Det er bare fordi jeg tester systemerne på min egen server, og der har jeg haft 2 liggende, og derfor problemet. Men kunderne ligger jo self. på hver sit normalt.
Avatar billede erikjacobsen Ekspert
28. oktober 2007 - 01:17 #19
Men da man sagtens kan have /wiki /forum /blog /photos /catsanddogs - alle med forskellige "cms"-systemer, på samme domæne, så er det ikke smart, man kunne fristes til at sige: uprofessionalt, hvis alle bruger $_SESSION['username'].
Avatar billede webweaver Praktikant
28. oktober 2007 - 01:18 #20
Det gør det næppe ej heller ikke i alle tilfælde.
Men ofte omkring et login.
Avatar billede webweaver Praktikant
28. oktober 2007 - 02:45 #21
Men post da et svar ... (:
Avatar billede erikjacobsen Ekspert
28. oktober 2007 - 08:17 #22
Jeg samler slet ikke på point, tak.
Avatar billede webweaver Praktikant
28. oktober 2007 - 12:47 #23
Okay ... ;)
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