Heb me een lange periode bezig gehouden met OOP en hebt toen niets meer gedaan met mysql (was langetijd(met lange tussen pauzes van niks doen en overnieuw starten) bezig met een html form creator dat de html form zelf geeft + validatie en ben daar zo goed als klaar mee).
Maar nu wil ik een goed beveiligde authentication script maken, maar weet niet meer precies hoe :$. Heb natuurlijk hier op phphulp naar de scripts zelf gekeken. Maar daar vind je veel 'verouderde', incomplete en/of te simele authentication scripts.
Waar ik nu vooral mee zit is de mysql gedeelte. Ik weet niet meer precues hoe ik dingen precies (het beste) moet aanpakken. Ik heb hier nog wel een handige boek dat ik kan doornemen(PHP 5 en MySQL Het Complete HANDboek), maar wil het weer leren door te doen(heb het alleen verleerd).
Mijn doel is dus om een authentication script te maken met de volgende dingen in gedachten:
-PHP5 OOP
-Sessions (geen cookies)
Punten die ik er in wil gaan verwerken:
Inlogsysteem
Onderdelen:
Inloggen
Uitloggen
Registreren
Checkpermission
Activeren
Wachtwoord vergeten
Failure check(bv naar 5 keer mislukt inloggen binnen een half uur is bannen(niet kunnen inloggen) voor 1 uur).
Captcha beveiliging?
Adminpanal:
-Accounts:
|-Toevoegen
|-Aanpassen
|-Verwijderen
|-Zoeken
|-??
-Rechten(weet nog niet hoe ik dit ga doen met behulp van een database. Ga dit gebruiken Tut link):
|-Toevoegen
|-Aanpassen
|-Verwijderen
|-??
-Cijfers
|-Aantal leden
|-Aantal active leden
|-Leden online
|-Laatste 10-100 leden geregistreerd
|-??
-Config
|-Activeren (aan/uit)
|-Failurecheck instellingen (na ?x mislukt binnen ?? minuten bannen voor ?? minuten)
|-??
Met deze 'tijdenlijke' mysql:
Bevat misschien nog fouten. Zal het morgen verbeteren...
edit(tabel verandert):
CREATE TABLE users (
id int(11) NOT NULL auto_increment,
username varchar(20) NOT NULL default '',
password varchar(32) NOT NULL default '',
email varchar(...) NOT NULL default '',
activation int(11) NOT NULL default '0',
reg_date datetime NOT NULL default '0000-00-00 00:00:00',
last_date datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY username
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Nu wil ik beginnen met de login gedeelte. Ik heb dus dan een 'class authentication' met daarin de functie 'login'.
Nu heb ik het volgende(grotensdeels hier van de scripts op phphulp):
<?php
function login($username, $password)
{
$sql_query = 'SELECT * FROM authentication WHERE username="'.$username.'" AND password="'.md5($password).'"';
$rows = mysql_num_rows(mysql_query($sql));
if($rows == 1)
{
$update = 'UPDATE authentication SET ip="'.$_SERVER["REMOTE_ADDR"].'" WHERE username="'.$username.'"';
mysql_query($update);
$_SESSION['login'] = '1';
}
if($rows == 0)
{
// header terug
}
}
?>
Hoe kan ik nu dit al beste aanpakken(zo efficent en snel mogenlijke - beste manier gewoon). Hoe zou jij dit doen. (Met ingedachte dat je de connectie al hebt gemaakt en boven aan session_start() heb staan.
Een lange topic :p, maar wil graag het hele script hier zo maken als dat gaat. Is altijd leuk als je ziet hoe andere mensen het doen en zo van elkaar leert. Ik wil dit script daarna hier op phphulp plaatsen als het af is samen met de credits van iedereen hier die hiermee meehelpt.
Ik hoop dat jullie mij niet gaan afzeiken van dat ik het met gaan google of gewoon het boek moet doorlezen, want het zou leuk zijn als samen met iedereen hier een goeie basis script lib kunnen maken. Wil dus een soort van refactormycode.com doen(check de site als je het niet kent).
Alvast bedankt, DDragonz :) :$