19. september 2004 - 14:20Der 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?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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);
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..
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'.
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.