login systeem

Geschreven door: Peter Prijs
Geschreven op: 25.03.2006 20:42


Beschrijving:
login systeem gemaakt door een newbie
Mijn verhaal

Ik heb dit login systeem gemaakt en wil graag jullie mening over het geheel.

Ben een complete Newbie met php en Mysql maar ben nu 2 weken aan het lezen geweest en 2 dagen aan het tikken geweest.

Nu wil ik graag weten of dit een veilige manier is om een login te maken.

P.s. Ik hoop ook dat dit het juiste plekje hiervoor is.
Tabel in je database maken.

Een sql dump van de tabel geeft het volgende:


-- Tabel structuur voor tabel `gebruikers`
-- 

CREATE TABLE `gebruikers` (
`UserId` int(11) NOT NULL auto_increment,
`NicknameGebruiker` varchar(15) NOT NULL,
`WachtwoordGebruiker` varchar(500) NOT NULL,
`NaamGebruiker` varchar(40) NOT NULL,
`AdresGebruiker` varchar(40) NOT NULL,
`PostcodeGebruiker` varchar(7) NOT NULL,
`PlaatsGebruiker` varchar(30) NOT NULL,
`TelefoonnummerGebruiker` varchar(11) NOT NULL,
`FaxnummerGebruiker` varchar(11) NOT NULL,
`EmailAdresGebruiker` varchar(30) NOT NULL,
PRIMARY KEY (`UserId`),
UNIQUE KEY `NaamGebruiker` (`NaamGebruiker`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


een betandeje voor de verbinding maken

data.inc

<?php
$server = "";
$gebruiker= "";
$wachtwoord= "";
$db = "";
?>


Vul op de lege plekken je gegevens in.
de login pagina

login.php


<?php
session_start();//een sessie starten
include('data.inc');// de gegevens laden voor mysql aanlog
if(isset($_SESSION['pass'])){// controle of er al ingelogd is d.m.v. controle of sessie al een password toegeken heeft gekregen.
Print"U bent al in gelogd.";
}else{
if(isset($_POST['submit'])){
print"u bent ingelogd!";
}else{require('loginform.html');// login weergeven als je nog geen sesie heby met een password variabele
}
}

if(isset($_POST['submit'])){// kijken of loginform.html al gesubmit is
if((!empty($_POST['gebruikersnaam']))&&(!empty($_POST['wachtwoord']))){// controleren of 1 van de 2 velden niet leeg is
if ($dbc=@mysql_connect($server,$gebruiker,$wachtwoord)){// proberen verbinding te maken
if (!@mysql_select_db($db)){//Voor als er geen verbinding met de tabel in dedatabase gemaakt kan worden
die('

Kan de database niet selecteren.
Probeer het nogmaals of neem contact op met de systeem beheerder
Druk op de --> Vorige <-- toets om het opnieuw te proberen.
');
}
}else{//Voor als er geen verbinding met de database gemaakt kan worden
die('

Er kan geen verbinding gemaakt worden met de database
');
}
//De opgehaalde gegevens aan een variabele toewijzen.
$gebruiker=$_POST['gebruikersnaam'];
$qryOphalenInlogGegevens= "SELECT * FROM gebruikers WHERE NicknameGebruiker =('$gebruiker')";
//De opgehaalde gegevens aan een variabele toewijzen.

If ($r=mysql_query($qryOphalenInlogGegevens)){
// De opgehaalde waarde weergeven
while($rlogin = mysql_fetch_array($r)){
if($rlogin['WachtwoordGebruiker']===md5($_POST['wachtwoord'])){
// De waarde meegeven aan de sesie zodat de gegevens indien nodig gebruikt kunnen worden
$_SESSION['username']=$gebruiker;
$_SESSION['pass']=$rlogin['WachtwoordGebruiker'];
$_SESSION['naam']=$rlogin['NaamGebruiker'];
$_SESSION['adres']=$rlogin['AdresGebruiker'];
$_SESSION['postcode']=$rlogin['PostcodeGebruiker'];
$_SESSION['plaats']=$rlogin['PlaatsGebruiker'];
$_SESSION['telefoon']=$rlogin['TelefoonnummerGebruiker'];
$_SESSION['faxnummer']=$rlogin['FaxnummerGebruiker'];
$_SESSION['emailadres']=$rlogin['EmailAdresGebruiker'];
mysql_close();
print"$PHP_SELF";
}else{
mysql_close();
echo"

foutief wachtwoord
";
}
}
}
}else{//De tekst voor als een gebruikersnaam of wachtwoord of beide vergeten worden.
echo"

Vul een gebruikersnaam en een wachtwoord in anders kan u niet aangemeld worden.
";
}
}
?>


de vraag van mij ?

Is dit nu een velige methode.

En zijn er nog dingen waar ik op moet letten.

P.s. Ik weet dat er nog een logout ontbreekt maar ik wil eerst is weten hoe veilig de login is.

Met vriendelijke Groet,

Peter
Oke Arjan ik had hem verkeerd geplaats maar een Admin heeft hem gelukkig al verplaats.

Ik ga in ieder geval maar een studeren op jouw voorbeeldje



Oke Arjan ik had hem verkeerd geplaatst maar een Admin heeft hem gelukkig al verplaatst.

Ik ga in ieder geval maar eens studeren op jouw voorbeeldje


die data.inc ga ik maar snel wijzigen dan thnx

Waarom is een sessie eigenlijk gevaarlijk hij wordt buiten de www directory in een tmp map aangemaakt
en is uniek per opsttart van de browser.
Dit soort algemene vragen hiervoor kun je de antwoorden goed voor vinden binnen de tutorials waar Arjan naar verwees als zijnde getestte en goedbevonden infobron. Het is niet dat ik je niet wil helpen maar deze informatiebronnen zijn hiervoor bedoeld :)

Suc6 met je leren en creeren :)
Een sessieid kan vrij eenvoudig gestolen worden. Controlleer dus niet of een sessie bestaat, maar of de inhoud daarvan goed is. Ik geef in mijn nieuwssysteem een sessieid een random string, die verwisseld word bij iedere f5. Dat staat ook in de database en daardoor kan ik controlleren hoe en wat :).
Ik heb naar je nieuws systeem gekeken en metname naar gebruikers.php nu wil ik alleen geen cookies gebruiken.
Maar als ik het goed begrijp en ik geef de sessie bij het opstarten een constante "loggedin"met de waarde 'FALSE'en bij juiste loggin wijzig ik die in 'TRUE' en ik controleer elke keer of de sessie variable "loggedin"bestaat en de waarde "TRUE" in de trend van :

<?php
session_start();


if(isset($_SESSION['loggedin'])){
if($_SESSION['loggedin']==="TRUE"){
echo"u bent nu ingelogd";
}else{
echo"u bent niet ingelogd";
}
}else{
echo"Uw sesie variable bestaat niet wat bent u aan het doen ???????";
}
?>

Dan is het dus al een stuk veilger nu moet ik alleen nog zorgen dat deze waarde 'TRUE' iets van een te controleren random is.
Zo dat hij minder voor de hand liggend is. en minder makkelijk te kreken

Of begrijp ik e nu verkeerd

Reageren