Login script dmv een class
Dit is een script geheel gemaakt dmv een class.
Ik hoop dat jullie er iets aan hebben ik heb het net gemaakt...
Het moest af en nu post ik het.
Het is men eerste script dat ik post.
Commentaar welkom:)
Gesponsorde koppelingen
PHP script bestanden
10 reacties op 'Login script dmv een class'
Gesponsorde koppelingen
Een voorbeeld maken in OOP heeft pas zin op het moment dat je de sterke kanten van OOP naar voren laat komen. Verder vind ik ook, dat je niet je eerste schreden op een bepaald pad meteen in de scriptlib moet zetten. Het is lief dat je je laatste ontdekkingen wilt delen, maar dit moedigt beginners in OOP niet aan. Wat is in dit geval de reden om OOP te gebruiken?
Edit:
Er staat trouwens nog een foutje in head_class.php:
regel 126: $doe = new loginsys;
moet zijn: $doe = new loginsys ();
Er staat trouwens nog een foutje in head_class.php:
regel 126: $doe = new loginsys;
moet zijn: $doe = new loginsys ();
Het is helaas ook niet meer dan het gebruiken van een klasse. Voor OOP moet je namelijk objecten gebruiken en dat gebeurt hier niet, login is namelijk een actie die bij de klasse gebruiker hoort. Je zou dus een gebruiker klasse moeten maken.
Verder, zijn de globale variabelen wel eigenschappen?
En je methoden zijn vrij onoverzichtelijk, een kenmerk van OOP is dat je de methoden zo klein en overzichtelijk mogelijk probeert te houden, dan kan je er later ook nog wat mee.
Het is niet heel erg slecht hoor, gewoon een begin wat je zoals Jan al zegt, niet met ons hoeft te delen, je had beter op het forum kunnen vragen of je op de goede weg zit.
Verder, zijn de globale variabelen wel eigenschappen?
En je methoden zijn vrij onoverzichtelijk, een kenmerk van OOP is dat je de methoden zo klein en overzichtelijk mogelijk probeert te houden, dan kan je er later ook nog wat mee.
Het is niet heel erg slecht hoor, gewoon een begin wat je zoals Jan al zegt, niet met ons hoeft te delen, je had beter op het forum kunnen vragen of je op de goede weg zit.
1) Je klasse is gewoon een verzameling van functies die niet echt samenwerken met elkaar. Ook is er geen constructor. (Tip: haal alles uit die klasse en zet de aparte functies in bv, login.func.php en include die)
2) Dit login script is zeer onveilig, iemand kan zo je sessie overnemen door de cookie te stelen ( Session Hi-Jacking ). (Tip: voeg wat controles bij. (vb: IP, tijd, browser, ... ) )
Voor de rest is alles wel mooi gescript ;-)
Hopelijk doe je wat met deze constructieve commentaar..
2) Dit login script is zeer onveilig, iemand kan zo je sessie overnemen door de cookie te stelen ( Session Hi-Jacking ). (Tip: voeg wat controles bij. (vb: IP, tijd, browser, ... ) )
Voor de rest is alles wel mooi gescript ;-)
Hopelijk doe je wat met deze constructieve commentaar..
Ik zal het verhaaltje oop overslaan, omdat dit nu wel genoeg behandeld is. Ik wilde eigenlijk alleen een opmerking plaatsen over de feedback van de login procedure in login.php.
Hierin geef je aan of een wachtwoord onjuist is of dat een gebruiker niet bestaat. Het geeft zo iemand wel een indicatie of een gebruiker bestaat. het is makkelijk voor de ontwikkelaar, maar ik zou hier toch echt de algemene term gebruiken:
ongeldige gebruikersnaam/wachtwoord combinatie.
Je zou kunnen overwegen om de feedback gescheiden op te slaan in een logging, waardoor je ondersteuning aan je gebruikers kunt geven, mocht het fout gaan.
Nog over de SELECT query van op regel 14 in head_class.php. deze is nu:
$select = "SELECT `id`,`username`,`password`, `activated` FROM `users` WHERE `username` = '".$username."'";
Ik zou deze aanpassen naar:
$select = "SELECT `id`,`username`,`password`, `activated` FROM `users` WHERE `username` = '".$username."' LIMIT 1";
Hiermee weet je zeker dat je altijd maar een enkel record terug krijgt. Ondanks dat je in de register functie een controle uitvoert op het eventueel bestaan van de gebruikersnaam, is dit geen garantie!!!
Een tip, welke je zeker kunt gebruiken, is om de return values ander op te pakken. in plaats van overal return "U bent geregistreerd"; etc te gebruiken, zou je dit met codes kunnen opvangen. Deze codes kun je vervolgens in een language file omzetten naar de juiste tekst. Verder kun je hier ook makkelijker acties op ondernemen.
een voorbeeld:
huidige functie:
function change_password($oud, $nieuw, $id) {
$select = "SELECT `password` FROM `users` WHERE `id` = '".id."'";
$query = mysql_query($select) OR DIE (mysql_error());
$row = mysql_fetch_assoc($query);
if(MD5($oud) == $row['password']) {
$nieuw = MD5($nieuw);
$query2 = mysql_query("UPDATE `users` SET `password` = '".$nieuw."' WHERE `id` = '".$id."'") OR DIE (mysql_error());
return "Paswoord succesvol veranderd!";
}
else {
return "Oud paswoord klopt niet!";
}
}
Hiervan zou je kunnen maken:
function change_password($oud, $nieuw, $id) {
$select = "SELECT `password` FROM `users` WHERE `id` = '".id."'";
$query = mysql_query($select) OR DIE (mysql_error());
$row = mysql_fetch_assoc($query);
if(MD5($oud) == $row['password']) {
$nieuw = MD5($nieuw);
$query2 = mysql_query("UPDATE `users` SET `password` = '".$nieuw."' WHERE `id` = '".$id."'") OR DIE (mysql_error());
$return['code'] = 1;
$return['msg'] = "Paswoord succesvol veranderd!";
}
else {
$return['code'] = 0;
$return['msg'] = "Oud paswoord klopt niet!";
}
return $return;
}
Je kunt nu een if-statement gebruiken om acties te ondernemen, zoals:
$result = $user->change_password($oud, $nieuw, $id);
if ($result['code'] == 1) {
echo $msg[$language]['password_changed'];
}
else {
echo $msg[$language]['faulty_password'];
}
// de $msg variabele zou je kunnen vullen met teksten in verschillende talen, waardoor je wat flexibeler bent. tevens heb je zo een algemenere functie, welke breder toepasbaar is.
Je zou met alle tips nu wel een mooie user klasse kunnen maken, waar je dus alle onderdelen in opvangt.
Mijn advies: blijven proberen!!!!
Hierin geef je aan of een wachtwoord onjuist is of dat een gebruiker niet bestaat. Het geeft zo iemand wel een indicatie of een gebruiker bestaat. het is makkelijk voor de ontwikkelaar, maar ik zou hier toch echt de algemene term gebruiken:
ongeldige gebruikersnaam/wachtwoord combinatie.
Je zou kunnen overwegen om de feedback gescheiden op te slaan in een logging, waardoor je ondersteuning aan je gebruikers kunt geven, mocht het fout gaan.
Nog over de SELECT query van op regel 14 in head_class.php. deze is nu:
$select = "SELECT `id`,`username`,`password`, `activated` FROM `users` WHERE `username` = '".$username."'";
Ik zou deze aanpassen naar:
$select = "SELECT `id`,`username`,`password`, `activated` FROM `users` WHERE `username` = '".$username."' LIMIT 1";
Hiermee weet je zeker dat je altijd maar een enkel record terug krijgt. Ondanks dat je in de register functie een controle uitvoert op het eventueel bestaan van de gebruikersnaam, is dit geen garantie!!!
Een tip, welke je zeker kunt gebruiken, is om de return values ander op te pakken. in plaats van overal return "U bent geregistreerd"; etc te gebruiken, zou je dit met codes kunnen opvangen. Deze codes kun je vervolgens in een language file omzetten naar de juiste tekst. Verder kun je hier ook makkelijker acties op ondernemen.
een voorbeeld:
huidige functie:
function change_password($oud, $nieuw, $id) {
$select = "SELECT `password` FROM `users` WHERE `id` = '".id."'";
$query = mysql_query($select) OR DIE (mysql_error());
$row = mysql_fetch_assoc($query);
if(MD5($oud) == $row['password']) {
$nieuw = MD5($nieuw);
$query2 = mysql_query("UPDATE `users` SET `password` = '".$nieuw."' WHERE `id` = '".$id."'") OR DIE (mysql_error());
return "Paswoord succesvol veranderd!";
}
else {
return "Oud paswoord klopt niet!";
}
}
Hiervan zou je kunnen maken:
function change_password($oud, $nieuw, $id) {
$select = "SELECT `password` FROM `users` WHERE `id` = '".id."'";
$query = mysql_query($select) OR DIE (mysql_error());
$row = mysql_fetch_assoc($query);
if(MD5($oud) == $row['password']) {
$nieuw = MD5($nieuw);
$query2 = mysql_query("UPDATE `users` SET `password` = '".$nieuw."' WHERE `id` = '".$id."'") OR DIE (mysql_error());
$return['code'] = 1;
$return['msg'] = "Paswoord succesvol veranderd!";
}
else {
$return['code'] = 0;
$return['msg'] = "Oud paswoord klopt niet!";
}
return $return;
}
Je kunt nu een if-statement gebruiken om acties te ondernemen, zoals:
$result = $user->change_password($oud, $nieuw, $id);
if ($result['code'] == 1) {
echo $msg[$language]['password_changed'];
}
else {
echo $msg[$language]['faulty_password'];
}
// de $msg variabele zou je kunnen vullen met teksten in verschillende talen, waardoor je wat flexibeler bent. tevens heb je zo een algemenere functie, welke breder toepasbaar is.
Je zou met alle tips nu wel een mooie user klasse kunnen maken, waar je dus alle onderdelen in opvangt.
Mijn advies: blijven proberen!!!!
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details
Door:
Manaus- 6 jaar geleden
- 6.869 x bekeken
- Labels
- Geen tags toegevoegd.
- PHP scripts opties
- Overig
- Nieuwste PHP scripts
- PHP script toevoegen


PHP hulp
0 seconden vanaf nu