Gå til innhold

Login-script, cookies & sessions


Anbefalte innlegg

Holder på å øve meg på PHP & MySQL, og nå er turen kommet til et login-script.

Sålangt har jeg gjort det slik at man kan registrere seg, og da blir infoen lagt til i databasen.

 

Det jeg sitter litt fast på, er hvordan jeg kan la dem logge seg inn med det brukernavnet og passordet de registrerte seg med?

 

Dvs. hvis brukernavnet og passordet stemmer overens med det som er lagret i databasen, vil brukeren bli henvist til en side - f.eks "innlogget.php".

 

Regner med det er lurt å bruke cookies og sessions i en slik forbindelse også, men for å være ærlig så forstår jeg fint lite av dokumentasjonene på php.net - og ellers hva jeg har lest på nettet (engelsk).

 

Hadde vært utrolig fint hvis noen også kunne forklart enkelt hvordan jeg kan bruke sessions og cookies.

 

På forhånd takk.

Lenke til kommentar
Videoannonse
Annonse

veldig enkelt:

 

etter de logger inn

<?php

session_start;
if(logg inn sjekk er ok){
 $_SESSION['loggetinn'] = "ja";
}?>

 

der en skal gjøre ting som bare innloggede kan være:

<?php
session_start;

if($_SESSION['loggetinn'] == "ja"){
echo "du er logget inn, mann!";
}
?>

 

du bør gjøre mer med tanke på sikkerhet, men sånn kan det funke helt basic.

Lenke til kommentar

For å sjekke om du har det samme i databasen som det brukeren skrive inn i input feltene:

 

$brukernavn = mysql_real_escape_string($_POST['brukernavn']);

$passord = md5(mysql_real_escape_string($_POST['passord']));

 

$sql = mysql_query("SELECT * FROM brukere WHERE brukernavn='$brukernavn' AND passord='$passord'"); // Sjekker om det er noen i databasen som har brukernavn og passord likt som det som brukeren skrev inn i form'et

$resultater = mysql_num_rows($sql);

 

if ($resultater == 1) { // Hvis det bare er et resultat

$r = mysql_fetch_assoc($sql);

$_SESSION['brukernavn'] = $r['brukernavn']; // Setter SESSIONEN brukernavn til det brukernavnet den får ut av spørringen

$value = $r['brukernavn'];

setcookie("Bruker", $value, time()+3600); // Setter en cookie (Bruker) med navnet på brukeren som går ut om 1 time (60*60sekunder)

}

 

 

 

da må du også ha session_start(); øverst i index.php

 

Forskjellen på sessions og cookies er at sessions blir på siden. Mens cookies blir lagret på brukerens PC. Det er derfor cookies er lettere å endre.

Edit; Endre for potensielle hackere. For å "stjele" innlogget-statusen til en annen bruker. Det er lurt å legge en random hash string i cookie og sjekke den opp mot databasen hvis du skal ha en "logg inn for alltid" funksjon. (også da at stringen endrer seg hver gang brukeren går inn på siden eller noe sånt)

 

La også til md5()

Endret av Ståle
Lenke til kommentar

Blir dette feil?

 

<?php

session_start();

$brukernavn = $_POST[brukernavn];
$passord = $_POST[passord];
$passord = md5($passord);

$host = "localhost";
$username = "root";
$password = "";
$db = "users";

$connect = mysql_connect($host, $username, $password);
mysql_select_db($db);

$sql = mysql_query("SELECT * FROM users WHERE brukernavn='$brukernavn' AND passord='$passord'");

$resultater = mysql_num_rows($sql);

if($resultater == 1) { 
$r = mysql_fetch_assoc($sql);

$_SESSION['brukernavn'] = $r['brukernavn'];

$value = $r['brukernavn'];
setcookie("Bruker", $value, time()+3600);
echo "Du er logget inn";
}

?>

Endret av -Magne-
Lenke til kommentar

Det er igrunn riktig, men man bør ALDRI kjøre data fra bruker direkte inn i et query uten å sikre det først med mysql_real_escape_string();

 

Regner med du har lagret passordet i MD5, da det er det dette skriptet sjekket mot...?

 

På hver side sjekker du bare $_SESSION['brukernavn'], men hvorfor Ståle vil bruke cookies som varer 1 time skjønner jeg ikke... :p

Lenke til kommentar

Når brukeren opprettes, hva legger du inn i databasen?

 

Noe sånt:

$brukernavn = mysql_real_escape_string($_POST['brukernavn']);

$passord= md5($_POST['passord']);

INSERT INTO brukere (brukernavn, passord) VALUES ('$brukernavn', '$passord')

Endret av ZoRaC
Lenke til kommentar
*snip*

På hver side sjekker du bare $_SESSION['brukernavn'], men hvorfor Ståle vil bruke cookies som varer 1 time skjønner jeg ikke... :p

7727358[/snapback]

 

Bare for å vise hvordan man setter en cookie ettersom det var blant annet det trådstarter lurte på. :)

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...