Yankes Skrevet 28. juni 2005 Del Skrevet 28. juni 2005 Jeg har laget en side som er passord beskyttet, men jeg lurer på hvordan jeg får "lagra" passordet når noen logger inn. Jeg vil ha sånn at man må trykke på "Log Ut" for å komme ut. login.php: <form method="post" action="loggetinn.php"> Brukernavn: <br> <input id="input" type="text" name="brukernavn"><br> Passord: <br> <input id="input" type="password" name="passord"><br> <input id="input" type="submit" value="Login"> </form> loggetinn.php: <?php // Brukere start $brukere["bruker1"]="pass1"; $brukere["bruker2"]="pass2"; $brukere["bruker3"]="pass3"; // Brukere slutt if($brukere[$_REQUEST["brukernavn"]] == $_REQUEST["passord"]){ echo "Du er logget inn!"; } else{ echo "Du er ikke logget inn!"; exit; } ?> Tar imot alle svar Lenke til kommentar
Zic0 Skrevet 28. juni 2005 Del Skrevet 28. juni 2005 Ved hjelp av sessions kan du det... Lenke til kommentar
Yankes Skrevet 28. juni 2005 Forfatter Del Skrevet 28. juni 2005 hmmm... men kan du gi et eksempel da? så jeg kan bruke det hehe Lenke til kommentar
LoS Skrevet 28. juni 2005 Del Skrevet 28. juni 2005 (endret) Sessions er fint å bruke i flere sammenhenger, ofte er det kjekt å starte med sessions for å lage administrasjonsområder, for så å gå over til noe man har mer kontroll over. Sessions er i grunn så enkelt som det kan få blitt. For å klargjøre siden din for å bruke sessions må du sette koden <?php session_start(); ?> helt i toppen av hvert dokument på websiden din. Bruker du ett includescript på hele siden så holder det å sette dette i toppen av dokumentet includescriptet står i. Sessions benytter seg oftest av cookies, og skriver om urlen og forms når hvis du ikke har cookies påskrudd. Dette gjør at du kan sende variabler fra ett dokument til ett annet uten at du gjøre noe annet enn å sette variabelen. Session starter du ganske enkelt ved å ha ovennevte kodesnutt i toppen av dokumentet, og ved å ganske enkelt gjøre: <?php $_SESSION['loggetinn'] = 1; ?> For å fjerne alle sessions (logge ut, f.eks.) kan du bruke den ganske selvforklarende funksjonen <?php session_destroy(); ?> Ved hjelp av dette kan du altså ha noen dokumenter som dette: login.php <?php session_start(); if(!isset($_POST['submit'])) { //login form her } else { if($_POST['username'] == "admin" && $_POST['password'] == "passord") { $_SESSION['loggetinn'] = 1; echo 'logget inn'; } else { $_SESSION['loggetinn'] = 0; echo 'feil brukernavn eller passord'; } } ?> admin.php <?php session_start(); if($_SESSION['loggetinn'] == 1) { // skriv ut adminpanel. } else { header("location: login.php"); } ?> logout.php <?php session_start(); session_destroy(); header("location: index.php"); ?> Prøvde så godt jeg kunne å forklare, men blir kanskje litt kaos i den lille boksen her, men håper du forstår. Endret 28. juni 2005 av LoS Lenke til kommentar
ZoRaC Skrevet 29. juni 2005 Del Skrevet 29. juni 2005 Anbefales ikke å ha bare sjekke på den måten, da noen kan "stjele" sessionen og være innlogget med engang. Sett f.eks $_SESSION['check'] = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); og sjekk if ($_SESSION['check'] === md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) { //innlogget } Da må brukeren fake IP og browser for å kunne komme inn i tillegg til å "stjele" sessionen og siden det hashes med MD5 så vet ikke en hacker hva han må fake. Lenke til kommentar
trrunde Skrevet 29. juni 2005 Del Skrevet 29. juni 2005 Session_register er ikke det nødvendig? Lenke til kommentar
PT Skrevet 29. juni 2005 Del Skrevet 29. juni 2005 Session_register er ikke det nødvendig? Fra manualen: Use of $_SESSION (or $HTTP_SESSION_VARS with PHP 4.0.6 or less) is recommended for improved security and code readability. With $_SESSION, there is no need to use the session_register(), session_unregister(), session_is_registered() functions. Session variables are accessible like any other variables. Lenke til kommentar
trrunde Skrevet 29. juni 2005 Del Skrevet 29. juni 2005 Ok takker.. holder på å prøve å lære meg php og en i klassen sa jeg måtte ha session_register derfor har jeg brukt det men det kan jeg jo slutte med nå siden det ikke er nødvendig Lenke til kommentar
arnizzz Skrevet 1. juli 2005 Del Skrevet 1. juli 2005 Anbefales ikke å ha bare sjekke på den måten, da noen kan "stjele" sessionen og være innlogget med engang. Sett f.eks $_SESSION['check'] = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); og sjekk if ($_SESSION['check'] === md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) { //innlogget } Da må brukeren fake IP og browser for å kunne komme inn i tillegg til å "stjele" sessionen og siden det hashes med MD5 så vet ikke en hacker hva han må fake. Godt tips. Det skal jeg huske på Lenke til kommentar
birds Skrevet 1. juli 2005 Del Skrevet 1. juli 2005 Anbefales ikke å ha bare sjekke på den måten, da noen kan "stjele" sessionen og være innlogget med engang. Sett f.eks $_SESSION['check'] = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); og sjekk if ($_SESSION['check'] === md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) { //innlogget } Da må brukeren fake IP og browser for å kunne komme inn i tillegg til å "stjele" sessionen og siden det hashes med MD5 så vet ikke en hacker hva han må fake. Fant dette i PHP-dokumentasjonen: [Editor's Note] Locking a session to an IP address will sometimes result in valid user's sessions not being restored. ISPS sometimes use more than one proxy server, the ISP may direct the traffic through a different proxy on each request[/Note] Vet ikke om det har noe å si, men det var nå det som stod om IP-sjekking på den siden. siden det hashes med MD5 så vet ikke en hacker hva han må fake. Session-variablene kan vel ikke leses av andre uansett, de får jo bare en session ID. Så om du lagrer IP-en så er det ingen som kan se det? Lenke til kommentar
LoS Skrevet 1. juli 2005 Del Skrevet 1. juli 2005 Eksempelet var vel kun for å forstå hvordan du enkelt kan bruke sessions for å logge ut og inn og være innlogget. Kode som øker sikkerhet, og som samtidig kan forvirre leseren er ikke alltid like smart å bruke. Han skal lære seg å bruke sessions. Dessuten så er det ikke verdens enkleste ting å snappe opp sessioniden heller. Uansett, fint at du hjelper til! Lenke til kommentar
Yankes Skrevet 3. juli 2005 Forfatter Del Skrevet 3. juli 2005 Takker for alle svar! Jeg fikk det til å funke nå Lenke til kommentar
Cucum(r) Skrevet 5. juli 2005 Del Skrevet 5. juli 2005 Eg har i blant opplevd problemer med å definere fleire sessionvariabler, for å så sjekke begge to. For eksempel: if($blah == $foo) { $_SESSION['validale'] = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']); $_SESSION['username'] = $sql['username']; header("Location: http://example.org/valider.php"); } valider.php: if(md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']) == $_SESSION['valdale'] AND $sql['username'] == $_SESSION['username']) { // Foo this } (Koden kan sikkert inneholde feil, dette var berre eit eksempel.) Dette har eg i nokre tilfeller (på nokre serverar) opplevd at ikkje fungerer. Er eg den einaste? 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å