Avatar billede tjensen Nybegynder
19. september 2004 - 14:20 Der er 12 kommentarer og
1 løsning

Den glemmer min $_SESSION

Hey!

Jeg har skrevet et login script på min side, hvor brugerne ligger i en db. Når de logger ind bliver deres adgangs niveau fastlagt til enten:
$_SESSION['adgang_niv']="admin"
$_SESSION['adgang_niv']="bruger"

og eksistere de ikk eller ikk logger ind til
$_SESSION['adgang_niv']="gaest"

Men efter de er logget ind, og trykker på et enkelt link, så hopper den tilbage til $_SESSION['adgang_niv']="gaest"

Og det er noget skidt noget! Hvorfor? Er det forkert at bruge $_SESSION til det?
Avatar billede tjensen Nybegynder
19. september 2004 - 14:21 #1
Lidt udklip af starten af min index.php

if ($_SESSION['adgang_niv']!="admin" OR $_SESSION['adgang_niv']!="bruger" ) {
    $_SESSION['adgang_niv']= "gaest";
    }

if ($_POST['login']){
    include ('login.php');
    }

if ($_POST['logout']) {
    $_SESSION['adgang_niv']="gaest";
    }
Avatar billede hmortensen Nybegynder
19. september 2004 - 14:22 #2
Det ser ud til at du resetter din session på dine sider.

Prøv at smide noget kode
Avatar billede hmortensen Nybegynder
19. september 2004 - 14:24 #3
Ret til AND, det er jo kun hvis ingen af værdierne er sat, du vil ha den sat til gaest
Avatar billede tjensen Nybegynder
19. september 2004 - 14:25 #4
Sådan logger de ind:

Brugernavn:<br>
<input type="text" name="bruger" size="16"><br>   
Kodeord:<br>
<input type="password" name="kode" size="16"><br>
<input type="submit" value="Login"></form>

Det her tester og registrer dem:
<?php
include "db.php";
$sql = mysql_query("SELECT adgang_niv FROM bruger WHERE brugernavn = '{$_POST['bruger']}' AND kodeord = '{$_POST['kode']}'");
include "luk_db.php";

if (mysql_num_rows($sql)>0) {
    $brugerdata = mysql_fetch_array($sql);
     
    if($brugerdata['adgang_niv']=="admin"){
          $_SESSION['adgang_niv']="admin";
    } elseif ($brugerdata['adgang_niv']=="bruger") {
        $_SESSION['adgang_niv']="bruger";
    }
} else {
    $_SESSION['adgang_niv']="gaest";
}
?>
Avatar billede hmortensen Nybegynder
19. september 2004 - 14:25 #5
if ($_SESSION['adgang_niv']!="admin" AND $_SESSION['adgang_niv']!="bruger" ) {
    $_SESSION['adgang_niv']= "gaest";
    }
Avatar billede tjensen Nybegynder
19. september 2004 - 14:26 #6
Har rettet til and, det var ikk det.. Men den skal selvfølgelig også værer rigtig. :)
Avatar billede tjensen Nybegynder
19. september 2004 - 14:29 #7
Har overvejet lave det om og ligge det ned i cookies, ville det være en bedre løsning?
Avatar billede morteeart Nybegynder
19. september 2004 - 14:30 #8
har du husket session_start(); i toppen af ALLE siderne ?
Avatar billede morteeart Nybegynder
19. september 2004 - 14:31 #9
og nej, Cookies er ikke end bedre løsning.
Avatar billede tjensen Nybegynder
19. september 2004 - 14:36 #10
Hvis du er en pige og vi var i byen havde jeg overkysset dig helt vildt! Shit en dum fejl! Det har drillet mig hele natten, og så er det bare så simpet..

Det var simpelthen det der skulle til!

Tak!
Avatar billede terrak Nybegynder
19. september 2004 - 14:39 #11
Lige en forklaring til OR og AND, selvom det er unødvendig nu :)

Lidt oversættelse:
Hvis adgangsniveauet ikke er 'admin', eller hvis adgangsniveauet ikke er 'bruger', så skal adgangsniveauet være 'gaest'.
Så hvis bare ét af de to første udtryk er sandt, så vil adgangniveauet blive 'gaest'.

Las os se hvad der sker hvis adgangsniveauet er 'admin':
For at adgangsniveauet skal blive 'gaest', skal en af disse to udtryk være opfyldt - (adgangsniveau er ikke 'admin') eller (adgangsniveau ikke er 'bruger'). Den første vil være falsk(da adgangsniveauet jo er 'admin'), hvilket ikke udløser 'gaest'. Den anden vil være sand, da adgangsniveauet ikke er 'bruger', hvilket vil sætte adgangniveauet til 'gaest'.

Er adgangsniveauet 'bruger', så vil der ske det samme, her er det bare det første udtryk der vil være sand, da adgangsniveauet ikke er 'admin'.

Din løsning vil være at sætte AND ind, i stedet for OR. Så lyder det nemlig sådan her:
Hvis adgangsniveauet ikke er 'admin' og adgangsniveauet ikke er 'bruger', så sæt adgangniveauet til 'gaest'.
Avatar billede tjensen Nybegynder
19. september 2004 - 14:42 #12
Ja, det er nemlig helt rigtig.. Bare en lille dummer fra min side, burde give kvaje bajer!

Mit helt store glemsel var dog session_start();
Avatar billede morteeart Nybegynder
19. september 2004 - 14:42 #13
:O)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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