Amos Skrevet 29. mai 2004 Del Skrevet 29. mai 2004 Jeg har ei side som bruker php og mysql til å håndtere sikkerheten mellom 3 forskjellige brukernivå. Hvilken meny den enkelte brukeren skal få opp bestemmes av hvilken brukertype som er registrert i mysql databasen. (bruker, admin, superadmin) Jeg har hele tiden trodd at dette har fungert bra, og det gjør det i IE 6.0. Installerte Opera 7.5 her om dagen, og fikk sjokk. Når jeg logget inn med laveste brukernivå (minst rettigheter) fikk jeg opp menyen til høyeste brukernivå. Hvordan går dette an? Fungerer ikke php like bra i alle browsere? Kanskje noen finner feil i koden: <?php $brukernavn = session_hentverdi("brukernavn"); $passord = session_hentverdi("passord"); $res = mysql_query("SELECT brutyp FROM bruker WHERE brukernavn = '$brukernavn' AND passord = '$passord'") or die (mysql_error()); while ($rad = mysql_fetch_array($res)) { $tp = $rad["brutyp"]; } if ($tp == "admin") { include("menya.php"); $ok = true; } else if ($tp == "superadmin") { include("menys.php"); $ok = true; } else if ($tp == "bruker") { include("menyb.php"); $ok = true; } else { echo "Du er ikke logget inn<br>"; $ok = false; } if ($ok) { //Her kommer innholdet på siden Lenke til kommentar
Gilbert Skrevet 29. mai 2004 Del Skrevet 29. mai 2004 php fungerer likt uansett browser. det er fordi en nettleser analyserer informasjonen fra serveren, og den informasjonen er det php som genererer. hva som kan være feil her vet jeg ikke; men du kan jo rydde litt opp i scriptet ved å bruke } elseif () { istedenfor } else if () { Lenke til kommentar
kroekkete Skrevet 29. mai 2004 Del Skrevet 29. mai 2004 Har du husket session_start() ? Lenke til kommentar
Amos Skrevet 30. mai 2004 Forfatter Del Skrevet 30. mai 2004 (endret) Har du husketsession_start() ? Ja, det er nok ikke det som er problemet. En annen ting er at det er en slette funksjon på siden. Man kan f.eks. slette brukere. Når jeg gjør dette i IE, ser man resultatet med en gang i en oversikt over brukere. I Opera må jeg refreshe siden for at endringen skal vises i oversikten. Er det noe med browserinnstillinger og cookies som gjør at dette blir feil i Opera? Har noen opplevd noe lignende? Har testet med Netscape Navigator 7.1, og det er ingen problemer med denne browseren. Det er altså bare Opera som skaper problemer... Endret 30. mai 2004 av Amos Lenke til kommentar
Gilbert Skrevet 30. mai 2004 Del Skrevet 30. mai 2004 Er det noe med browserinnstillinger og cookies som gjør at dette blir feil i Opera? Ja. Men det er en innstilling, ikke en feil Lenke til kommentar
RottePostei Skrevet 31. mai 2004 Del Skrevet 31. mai 2004 Skriv ut brukernavn og passord så du får se hva variablene inneholder. Liker ikke helt while løkka di Ville heller brukt $tp = ""; if ($rad = mysql_fetch_array($res) { tp = $rad["brutyp"]; } Lenke til kommentar
Amos Skrevet 31. mai 2004 Forfatter Del Skrevet 31. mai 2004 Skriv ut brukernavn og passord så du får se hva variablene inneholder.Liker ikke helt while løkka di Ville heller brukt $tp = ""; if ($rad = mysql_fetch_array($res) { tp = $rad["brutyp"]; } Testet $brukernavn og $passord, og de skrev ut akkurat det de skulle skrive ut. Har også endret scriptet med å legge inn if istedenfor while. Er det noen spesiell grunn til at en if betingelse vil fungere bedre enn en while-løkke her? Lenke til kommentar
RottePostei Skrevet 31. mai 2004 Del Skrevet 31. mai 2004 Hvis du mot formodning skulle få flere resulltater fra SQL-setningen din, vil $tp bli satt til verdien til siste post. Kan være vanskelig å forutsi hvilken post dette er. Egentlig bør de alltid gi samme resultat da, ettersom en bruker bare bør lligge inne en gang. Så det har egentlig ikke så mye å bety. Er koden i første post klippet direkte? Sjekk at det ikke er enkle = -tegn noen steder i ifene Skriv ut $tp før if($ok) { Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå