[Revieuw] Inlogsysteem
Ik heb een inlogsysteem gemaakt.
Het is alleen nog het inlog gedeelte, maar ik vroeg me toch af of ik nog wat kon verbeteren of iets kon toevoegen.
Dit is het script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
session_start();
//Setting- en databasegegevens ophalen
include 'includes/config.php';
//Inlogform
$inlogform = '
<form action="" method="POST">
Gebruikersnaam:<br />
<input type="text" name="gebruikersnaam"><br />
Wachtwoord:<br />
<input type="password" name="wachtwoord"><br />
<input type="submit" value="Inloggen">
</form>';
//Kijken of er gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
//Alle fouten worden in een array gezet
$errors = array();
//Kijken of er iets ingevuld is
if(!isset($_POST["gebruikersnaam"]) && !isset($_POST["wachtwoord"]))
{
//Zoniet, de error in de array zetten
$errors[] = 'U hebt niet alles ingevuld!';
}
//Kijken of gebruikersnaam en wachtwoord overeenkomen in de database
$salt = "ge5heim8es3al8t";
$query_gebruiker = "SELECT gebruikersnaam, wachtwoord FROM leden WHERE gebruikersnaam = '".mysql_real_escape_string($_POST['gebruikersnaam'])."' AND wachtwoord = '".md5($_POST['wachtwoord'] . $salt)."'";
if(!$uitvoeren_gebruiker = mysql_query($query_gebruiker);
{
echo 'Er ging wat mis door een database fout. Contacteer de webmaster!';
}
else
{
$result_gebruiker = mysql_num_rows($uitvoeren_gebruiker);
if($result_gebruiker == 0)
{
//Zoniet, de error in de array zetten
$errors[] = 'Uw inlog combinatie is fout!';
}
//Errors tellen
if(count($errors) != 0)
{
if(count($errors) == 1)
{
echo 'Er is 1 fout gevonden:';
echo '<br />';
foreach($errors as $error)
{
echo $error;
}
echo '<br /><br />';
echo $inlogform;
}
else
{
echo 'Er zijn '.count($errors).' fouten gevonden:';
echo '<br />';
foreach($errors as $error)
{
echo $error;
}
echo '<br /><br />';
echo $inlogform;
}
}
else
{
//sessies maken
$_SESSION['ingelogd'] = true;
$_SESSION['gebruikersnaam'] = $gebruikersnaam;
//Doorgestuurd worden naar...
header('Location:'.$header_inloggen);
exit;
}
}
}
else
{
//Loginform
echo $inlogform;
}
?>
session_start();
//Setting- en databasegegevens ophalen
include 'includes/config.php';
//Inlogform
$inlogform = '
<form action="" method="POST">
Gebruikersnaam:<br />
<input type="text" name="gebruikersnaam"><br />
Wachtwoord:<br />
<input type="password" name="wachtwoord"><br />
<input type="submit" value="Inloggen">
</form>';
//Kijken of er gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
//Alle fouten worden in een array gezet
$errors = array();
//Kijken of er iets ingevuld is
if(!isset($_POST["gebruikersnaam"]) && !isset($_POST["wachtwoord"]))
{
//Zoniet, de error in de array zetten
$errors[] = 'U hebt niet alles ingevuld!';
}
//Kijken of gebruikersnaam en wachtwoord overeenkomen in de database
$salt = "ge5heim8es3al8t";
$query_gebruiker = "SELECT gebruikersnaam, wachtwoord FROM leden WHERE gebruikersnaam = '".mysql_real_escape_string($_POST['gebruikersnaam'])."' AND wachtwoord = '".md5($_POST['wachtwoord'] . $salt)."'";
if(!$uitvoeren_gebruiker = mysql_query($query_gebruiker);
{
echo 'Er ging wat mis door een database fout. Contacteer de webmaster!';
}
else
{
$result_gebruiker = mysql_num_rows($uitvoeren_gebruiker);
if($result_gebruiker == 0)
{
//Zoniet, de error in de array zetten
$errors[] = 'Uw inlog combinatie is fout!';
}
//Errors tellen
if(count($errors) != 0)
{
if(count($errors) == 1)
{
echo 'Er is 1 fout gevonden:';
echo '<br />';
foreach($errors as $error)
{
echo $error;
}
echo '<br /><br />';
echo $inlogform;
}
else
{
echo 'Er zijn '.count($errors).' fouten gevonden:';
echo '<br />';
foreach($errors as $error)
{
echo $error;
}
echo '<br /><br />';
echo $inlogform;
}
}
else
{
//sessies maken
$_SESSION['ingelogd'] = true;
$_SESSION['gebruikersnaam'] = $gebruikersnaam;
//Doorgestuurd worden naar...
header('Location:'.$header_inloggen);
exit;
}
}
}
else
{
//Loginform
echo $inlogform;
}
?>
Alvast bedankt voor het kijken!
GreetzZzZzz,,
Victor
Gewijzigd op 04/10/2010 22:29:05 door Victor Php
Vind het geheel onoverzichtelijk.
EDIT: Review is zonder u.
Gewijzigd op 04/10/2010 19:30:26 door Niels K
- Inline html rommel -> fout.
- Html of xhtml?
- $fout_inloggen_1 & $fout_inloggen_2 wtf?
- WTF voor onzin bij errors tellen?
En nog wat vage onoverzichtelijke rommel zoals Niels dus ook al aangeeft.
Afgekeurd dus.
Misschien kun je een beetje overzichtelijker gaan werken, door overal netjes in te springen. Zo kun je er niks van maken, voor al het laatste gedeelte.
En altijd dood gaan na een redirect!!!
Ik ga eraan werken.
@Niels en Theodoor van Donge
Ik zal gaan inspringen.
@Karl
Ik zal error reporting eraf halen.
De $fout_inloggen_cijfer staan in settings.php
Ik zal dat even veranderen in de code en settings.php weghalen. ;-)
Hoebedoel je vage onzin bij errors tellen?
Hij telt de errors.
Als het er geen 0 zijn gaat hij kijken of het er 1 is. Dan geeft ie een error. Als het er meer dan 1 is telt ie het aantal errors, geeft die aan en zet de foutmelding neer.
Ik zie nou niet meteen wat daar raar aan is eigenlijk :$
@Pim de Haan
Kun je dat even uitleggen?
Altijd doodgaan..?
-Edit-
Ik heb al wat wijzigingen gemaakt.
Naar de rest zal ik morgen kijken.
Ik ga nu aan m'n huiswerk ;-)
Gewijzigd op 04/10/2010 19:59:22 door Victor Php
exit of die doen aangezien de rest van het script nog gewoon uitgevoerd zou kunnen worden.
Die constructie bij errors tellen vind ik gewoon vaag.
Je doet meerdere keren tellen. Wat is er mis met gewoon laten zien wat er mis is? En als je toch het aantal wilt tonen, dan kan dat volgens mij wel netter.
Na een redirect moet je Die constructie bij errors tellen vind ik gewoon vaag.
Je doet meerdere keren tellen. Wat is er mis met gewoon laten zien wat er mis is? En als je toch het aantal wilt tonen, dan kan dat volgens mij wel netter.
Scheid je HTML gewoon van PHP..
dat gaat toch nergens over?
Je maakt je inlog formulier var aan na het posten... lekker krom.
Gewijzigd op 04/10/2010 21:18:53 door Milo S
Ik leer ook alleen maar ;-)
@Karl
Ik ben dood gegaan na de header ;-).
En ik ga zoeken naar een nettere manier...
@Niels
Ga ik doen
@Milo S
Is die voorbeeldcode nu goed of fout?
Inlog formulier is nu voor het posten aangemaakt ;)
Als je dan data gaat versturen is het fout.
-_-'
Karl Karl op 04/10/2010 22:03:48:
Na een header hoort je script dood te gaan.
Als je dan data gaat versturen is het fout.
-_-'
Als je dan data gaat versturen is het fout.
-_-'
Nee hoor, gaat niet fout, kan gewoon.
Tis alleen niet echt de bedoelling dat als iemand header redirects uit zet, toch ineens wel je admin panel (bv) kan gebruiken ;)
Uitzetten betekent gewoon "negeren" natuurlijk
Niek s op 04/10/2010 22:35:31:
Nee hoor, gaat niet fout, kan gewoon.
Tis alleen niet echt de bedoelling dat als iemand header redirects uit zet, toch ineens wel je admin panel (bv) kan gebruiken ;)
Uitzetten betekent gewoon "negeren" natuurlijk
Karl Karl op 04/10/2010 22:03:48:
Na een header hoort je script dood te gaan.
Als je dan data gaat versturen is het fout.
-_-'
Als je dan data gaat versturen is het fout.
-_-'
Nee hoor, gaat niet fout, kan gewoon.
Tis alleen niet echt de bedoelling dat als iemand header redirects uit zet, toch ineens wel je admin panel (bv) kan gebruiken ;)
Uitzetten betekent gewoon "negeren" natuurlijk
Goed, goed, het kan gewoon...