PDA

Volledige versie bekijken : sessions


ath92
%Europe/Berlin %655 %2005, 16:43
in het topic genaamd verwijderen hadden we het over sessions, en dat gaat op verzoek van jordy hier verder:)

Jordy
%Europe/Berlin %657 %2005, 16:46
-Wat zijn sessions?
Een sessie is eigenlijk een tijdsvorm, bepaalde gegevens worden per sessie (per zoveel tijd) bewaart. Bij een inlog systeem blijft je naam en wachtwoord dus bewaard totdat je de pagina verlaat.

-Hoe maak je een inlogsysteem met sessions?
Ik neem aan dat je al een database hebt waarin 2 velden heb gemaakt, username en wachtwoord.

Noem het volgende script inloggen.php


<?
session_start();

if(!isset($_SESSION['ingelogged'])){

if($_POST){
include("config.php");

$gebruikersnaam = $_POST['gebruikersnaam'];
$wachtwoord = $_POST['wachtwoord'];
$query = "SELECT * FROM inloggen WHERE gebruikersnaam='$gebruikersnaam' AND wachtwoord = '$wachtwoord'";
$result = mysql_num_rows(mysql_query($query));
if($result==1){
$_SESSION['ingelogged'] = TRUE;
}

header("location: " . $_SERVER['PHP_SELF']);
exit();

}else{

echo "<form action=\"".$_SERVER['PHPSELF']."\" method=\"POST\">";
echo "Gebruikersnaam: <input type=text name=gebruikersnaam><BR>";
echo "Wachtwoord: <input type=password name=wachtwoord><BR>";
echo "<input type=submit name=Login></form>";
exit();

}
}

?>


-Wat gebeurt hier nou eigenlijk?
Het script haalt de gebruikersnaam en wachtwoord uit de database (de config.php bevat dus je database gegevens om die te benaderen). Daarna vergelijkt hij de ingevoerde username en wachtwoord met de username en wachtwoord die in de database staan. Als deze goed zijn onthoudt hij ze totdat je de pagina weer verlaat.

-Hoe beveilig ik meerdere paginas?
Om meerdere paginas te beveiligen voeg je op iedere pagina die je wilt beveiligen deze 2 regels code toe (boven aan je pagina, dus nog voordat de tag <html> erstaat):

<?php

session_start();
include("inloggen.php");
?>

ath92
%Europe/Berlin %667 %2005, 17:01
das nog eens duidelijk :) thx, hier help je me erg mee!

ath92
%Europe/Berlin %598 %2006, 14:22
okey, ik weet dat dit topic oud is, maar ik heb weer een vraag, en ik kan hier (denk ik) wel verdergaan, omdat het over hetzelfde onderwerp gaat :)

ik zit met het probleem, dat wanneer ik het script inzet, je kunt inloggen met welk wachtwoord of username dan ook, je komt er altijd in.... ik gebruik het script dat hierboven staat, ik zou graag willen weten wat ik fout doe...

brossiekoppie
%Europe/Berlin %604 %2006, 14:30
Je hebt een table met alle namen en pw's in? Je krijgt geen foutmelding?

ath92
%Europe/Berlin %607 %2006, 14:34
nope, er komt gewoon een formuliertje, die vul ik in met iets als: ahsbdfkjabsdf en dan doet ie het nog.... dus dat is wel een beetje vaag :(

mech7
%Europe/Berlin %685 %2006, 16:26
Op shared hosts kan je sessie's opslaan in de db om het iets veiliger te maken. Verzend passwords ook niet gewon mar encrypt ze met sha1 of md5 hash ^_^

Ook moet je de gebruikers tellen.. omdat het resultaat als het goed is nu altijd 1 weer zal geven..


// Count users with this combination
$sql = "SELECT COUNT(*) AS num_users
FROM users
WHERE username = '$login'
AND password = '$password'";


Maar dan in het nederlands :P

brossiekoppie
%Europe/Berlin %993 %2006, 23:50
Op shared hosts kan je sessie's opslaan in de db om het iets veiliger te maken. Verzend passwords ook niet gewon mar encrypt ze met sha1 of md5 hash ^_^

Ook moet je de gebruikers tellen.. omdat het resultaat als het goed is nu altijd 1 weer zal geven..


// Count users with this combination
$sql = "SELECT COUNT(*) AS num_users
FROM users
WHERE username = '$login'
AND password = '$password'";


Maar dan in het nederlands :P

Je kan ook gewoon je normale select query doen en dan kijken hoeveel rijen je terugrkijgt ^^

ath92
%Europe/Berlin %596 %2006, 14:18
srry maar ik begrijp jullie niet helemaal.... ik ben nog niet heel goed in php, en van md5 en sha 1 ofzo heb ik nog nooit gehoord... :# zou je daar iets meer uitleg over willen geven? en mischien ook even willen kijken naar het echte probleem? 8~

alvast bedankt

brossiekoppie
%Europe/Berlin %725 %2006, 17:25
md5 en sha1 zijn encryptiemethoden die een string omzetten naar een gencodeerde string. sha1 wordt tegenwoordig al meer aangeraden dan md5 omdat er nu eenmaal sites als deze (http://md5.rednoize.com/) zijn. Je slaat het paswoord geencodeerd op en controleert dan via if (sha1($_POST['paswoord']) == $dataUitMysql['paswoord']) { }

Ivm die sql query's: je doet eerst een query waarin je zoekt naar de info waar paswoord gelijk is aan het ingegeven paswoord enz maar dan moet je ook controleren hoeveel rijen (=resultaten) je terugkrijgt. Als dit niet 1 is dan is er een foutje.

ath92
%Europe/Berlin %881 %2006, 21:09
:O ik heb een hele grote fout gemaakt.... :# ik had namelijk een test geplaatst om te laten zien of je was ingelogd ( anders zag je dat niet) dus met
echo "u bent ingelogd";
maar die had ik op de verkeerde plek gezet.... heel erg sorry hiervoor.... maar nu heb ik nog ff een ander vraagje:
waar staat dat header("location: " . $_SERVER['PHP_SELF']); voor? dit is het enigste stukje wat ik niet begrijp....
en dat met dat md5 en sha1 is erg handig :) ik zal eens kijken hoe ik dat erin ga verwerken :D

brossiekoppie
%Europe/Berlin %949 %2006, 22:46
:O ik heb een hele grote fout gemaakt.... :# ik had namelijk een test geplaatst om te laten zien of je was ingelogd ( anders zag je dat niet) dus met
echo "u bent ingelogd";
maar die had ik op de verkeerde plek gezet.... heel erg sorry hiervoor.... maar nu heb ik nog ff een ander vraagje:
waar staat dat header("location: " . $_SERVER['PHP_SELF']); voor? dit is het enigste stukje wat ik niet begrijp....
en dat met dat md5 en sha1 is erg handig :) ik zal eens kijken hoe ik dat erin ga verwerken :D

Dat stuurt de browser naar dezelfde pagina terug om dan "u bent ingelogd te printen.