demiurgen Skrevet 2. mai 2006 Skrevet 2. mai 2006 jeg har en enkel innloggingsside hvor action er satt til en side som inneholder koden under: <?php define ("HEMMELIG_BRUKERNAVN", "Hei"); define ("HEMMELIG_PASSORD", "hopp"); if ( $_POST['passord'] == HEMMELIG_PASSORD && $_POST['brukernavn'] == HEMMELIG_BRUKERNAVN) { echo "Velkommen"; echo "<a href='side2.php'>side2</a>"; } else { echo "Feil brukernavn eller passord"; } ?> problemet her er at hvis du skriver side2.php i adresselinja på nettleseren så er du inne uten problemer. hvordan kan jeg unngå det?
Ernie Skrevet 2. mai 2006 Skrevet 2. mai 2006 Er vel kanskje ikke så rart når du sannsynligvis ikke har noen sjekk på om vedkommende er innlogget eller ei? Sagt på en lite annen måte, du må nok lage det litt mer avansert enn som så En litt "primitiv" måte vil være å bruke session og sjekke om vedkommende egentlig er logget inn på den måten.
Magnus Holm Skrevet 2. mai 2006 Skrevet 2. mai 2006 Legg til session_start() øverst i begge filene. Hvis de har skrevet riktig passord så setter du $_SESSION['access'] til 1. Den variablen vil holde seg helt til du lukker nettleseren, på tvers av sidene. I side2.php sjekker du om $_SESSION['access'] er lik 1, hvis ikke: "Access Denied"!
ZoRaC Skrevet 2. mai 2006 Skrevet 2. mai 2006 Bruk "===" i stedet for "==", da blir brukernavn og passord case-sensitive.
DarkSlayer Skrevet 2. mai 2006 Skrevet 2. mai 2006 Bruk "===" i stedet for "==", da blir brukernavn og passord case-sensitive. 6030125[/snapback] a == b bruker du for å sjekke at a har lik datainnhold som b. a === b bruker du for å sjekke at a og b har lik datainnhold OG samme datatype. har lite med case sensitivitet som så å gjøre, men det hjelper kanskje på.
ZoRaC Skrevet 2. mai 2006 Skrevet 2. mai 2006 DarkSlayer: Oi! Har programmert PHP i flere år nå, med både større og mindre prosjekt og jeg har alltid trodd at "==" har vært case-insensitive...
Peter Skrevet 3. mai 2006 Skrevet 3. mai 2006 Legg til session_start() øverst i begge filene. Hvis de har skrevet riktig passord så setter du $_SESSION['access'] til 1. Den variablen vil holde seg helt til du lukker nettleseren, på tvers av sidene. I side2.php sjekker du om $_SESSION['access'] er lik 1, hvis ikke: "Access Denied"! 6027263[/snapback] Finnes det noen måte å injisere noe i session? Dvs. lagres det noe annet enn SID på klientens maskin? (Vet SID også kan sendes ved url, men teorien blir den samme) Når du sammenligner strenger, bruker du strcmp-funksjonene. Du kan bruke === også, men aldri ==, nettopp fordi === sammenligner type. 1 == "1" <- burde det være true? int(1) == string("1") 0x1 == 0x31 1 === "1" <- false
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å