aanmeld script voor inlog systeem
Bij deze zou ik graag enkele feedback ontvangen over dit script.
Het is grotendeels door mijzelf ( her en der wat proberen) samengevoegd en het werkt naar behoren. (althans, voor zover). Kan hier iets mis mee gaan of zou ik nog wat moeten toevoegen qua beveiliging?
met beveiliging bedoel ik bijvoorbeeld catchpa of iets in die richting. Ik vind het zelf namelijk niet echt nodig. Het doel is eigenlijk om mensen die ik ken een eigen webblog te kunnen laten bijhouden (meer als een soort test omgeving voor mij zelf) dan dat het ook daadwerkelijk nut heeft. (daargelaten dat het nut heeft om te weten dat het een goede script is voor het aanmelden.)
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
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
<?php
// als men zich wil registreren
if ($_GET['actie'] == 'registreren')
{
// als formulier reeds is verstuurd
if ($_GET['versturen'] == 'ja')
{
//als er geen naam is ingevuld
if (empty($_POST['naam']))
{
echo "Je hebt geen naam ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
//als er geen wachtwoord is ingevuld
else if (empty($_POST['wachtwoord']))
{
echo "Je hebt geen wachtwoord ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
//als je geen 2e keer een wachtwoord hebt ingevuld
else if (empty($_POST['wachtwoord_controle']))
{
echo "Je moet ter controle ook het controleveld voor het wachtwoord invullen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
//vergelijk wachtwoord input 1 met wachtwoord input 2
else {
// als de wachtwoorden niet overeen komen
if ($_POST['wachtwoord'] != $_POST['wachtwoord_controle'])
{
echo "De ingevoerde wachtwoorden kwamen niet overeen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
// als alles klopt, schrijf de data weg in de database
else {
$registreer = "INSERT INTO gebruiker (naam, wachtwoord) VALUES ('".$_POST['naam']."', '".$_POST['wachtwoord']."')";
mysql_query($registreer);
echo "Uw gegevens zijn succesvol opgeslagen! Klik
<a href=\"login.php\">hier</a> om in te kunnen loggen.";
}
}
}
else {
}
}
// als formulier nog niet is verstuurd, toon registratieformulier
echo "
<div id=\"login\">
<h1>Registreren</h1>
<p>vul hieronder je gewenste gebruikersnaam en wachtwoord in.</p>
<form action=\"".$_SERVER['PHP_SELF']."?actie=registreren&versturen=ja\" method=\"post\">
<label>
<table width=\"200\" border=\"0\">
<tr>
<td><p>Gebruikersnaam:</p></td>
<td><input type=\"text\" name=\"naam\" size=\"15\"></td>
</tr>
<tr>
<td><p>Wachtwoord:</p></td>
<td><input type=\"password\" name=\"wachtwoord\" size=\"15\"></td>
</tr>
<tr>
<td><p>Wachtwoord ter controle:</p></td>
<td><input type=\"password\" name=\"wachtwoord_controle\" size=\"15\"></td>
</tr>
</table>
</label>
<input type='submit' name='submit' value='Registreer' />
</form>
</div>
";
?>
// als men zich wil registreren
if ($_GET['actie'] == 'registreren')
{
// als formulier reeds is verstuurd
if ($_GET['versturen'] == 'ja')
{
//als er geen naam is ingevuld
if (empty($_POST['naam']))
{
echo "Je hebt geen naam ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
//als er geen wachtwoord is ingevuld
else if (empty($_POST['wachtwoord']))
{
echo "Je hebt geen wachtwoord ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
//als je geen 2e keer een wachtwoord hebt ingevuld
else if (empty($_POST['wachtwoord_controle']))
{
echo "Je moet ter controle ook het controleveld voor het wachtwoord invullen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
//vergelijk wachtwoord input 1 met wachtwoord input 2
else {
// als de wachtwoorden niet overeen komen
if ($_POST['wachtwoord'] != $_POST['wachtwoord_controle'])
{
echo "De ingevoerde wachtwoorden kwamen niet overeen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
// als alles klopt, schrijf de data weg in de database
else {
$registreer = "INSERT INTO gebruiker (naam, wachtwoord) VALUES ('".$_POST['naam']."', '".$_POST['wachtwoord']."')";
mysql_query($registreer);
echo "Uw gegevens zijn succesvol opgeslagen! Klik
<a href=\"login.php\">hier</a> om in te kunnen loggen.";
}
}
}
else {
}
}
// als formulier nog niet is verstuurd, toon registratieformulier
echo "
<div id=\"login\">
<h1>Registreren</h1>
<p>vul hieronder je gewenste gebruikersnaam en wachtwoord in.</p>
<form action=\"".$_SERVER['PHP_SELF']."?actie=registreren&versturen=ja\" method=\"post\">
<label>
<table width=\"200\" border=\"0\">
<tr>
<td><p>Gebruikersnaam:</p></td>
<td><input type=\"text\" name=\"naam\" size=\"15\"></td>
</tr>
<tr>
<td><p>Wachtwoord:</p></td>
<td><input type=\"password\" name=\"wachtwoord\" size=\"15\"></td>
</tr>
<tr>
<td><p>Wachtwoord ter controle:</p></td>
<td><input type=\"password\" name=\"wachtwoord_controle\" size=\"15\"></td>
</tr>
</table>
</label>
<input type='submit' name='submit' value='Registreer' />
</form>
</div>
";
?>
alle input is uiteraard welkom! Alle extra feedback waar ik (in mijn ogen wat mee kan) zal ik gebruiken ter verbetering. Overigens heb ik ook een inlogsysteem, beveiliging welke alleen samen werkt met het inlog script.
Bij het inlog script maak ik gebruik van $_SESSION oftewel, de data komt in de sessies te staan. ( ik weet niet of dat nog relevant is verder? )
verder zou ik niet voor die get variabelen gaan. Daar kun je beter 2 hidden disabled fields voor posten
dus
Verder zal ik me nooit op jou site registreren nu ik weet dat je geen wachtwoord encoding gebruikt, zie bijvoorbeeld http://nl3.php.net/md5
Verder is je indenting niet heel duidelijk. ik zou proberen om je code zo te laten inspringen dat direct duidelijk is welke { bij welke } hoort. Dan heb je namelijk ook meteen duidelijk of alles wat word geopend ook weer word gesloten.
Dan is er nog het feit dat je niet controleerd of je query goed gaat. Dit terwijl je na het uitvoeren wel gewoon direct de melding
Quote:
geeft terwijl dit niet per definitie waar hoeft te zijn.Uw gegevens zijn succesvol opgeslagen!
Dit kun je bijv doen met :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
if(mysql_query(/*je query*/) && mysql_affected_rows() == 1)
{
/*is gelukt*/
}
else
{
/* debugstatement */
echo "er is een fout opgetreden op regel ".__LINE__.":<br />".mysql_error();
}
?>
if(mysql_query(/*je query*/) && mysql_affected_rows() == 1)
{
/*is gelukt*/
}
else
{
/* debugstatement */
echo "er is een fout opgetreden op regel ".__LINE__.":<br />".mysql_error();
}
?>
Verder kun je nog overwegen om een if om je formulier heen te doen met
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if(!$_SERVER["REQUEST_METHOD"] == "POST" && $error == fasle)
{
/*dan kun je hier je formulier weergeven*/
}
?>
if(!$_SERVER["REQUEST_METHOD"] == "POST" && $error == fasle)
{
/*dan kun je hier je formulier weergeven*/
}
?>
Dan kun je vervolgens van een verkorte if gebruik maken om eventueel al ingevulde velden weer in te vullen.
Verkorte if :
Code (php)
je defineerd bovenaan je regel :
vervolgens vervang je al je if else met het volgende :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if (empty($_POST['naam']))
{
echo "Je hebt geen naam ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.<br />";
$error = true ;
}
//als er geen wachtwoord is ingevuld
if (empty($_POST['wachtwoord']))
{
echo "Je hebt geen wachtwoord ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.<br />";
$error = true ;
}
?>
if (empty($_POST['naam']))
{
echo "Je hebt geen naam ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.<br />";
$error = true ;
}
//als er geen wachtwoord is ingevuld
if (empty($_POST['wachtwoord']))
{
echo "Je hebt geen wachtwoord ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.<br />";
$error = true ;
}
?>
Vervolgens zet je je query binnen de volgende if :
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if($_SERVER["REQUEST_METHOD"] == "POST" && $error == false)
{
/*je query uitvoeren*/
}
?>
if($_SERVER["REQUEST_METHOD"] == "POST" && $error == false)
{
/*je query uitvoeren*/
}
?>
Dit heeft als voordeel dat je meteen alle foutmeldignen krijgt als je iets neit goed invult. Want in deze setup krijg je alleen de eerste fout als je het eerste veld fout invult terwijl de 5de en 6de ook best fout kunnen zijn
Dit komt ook (met name als je grotere formulieren gaat maken) de gebruiksvriendeliujkheid ten goede omdat dan de waarden die wel kloppen gewoon worden weer gegeven.
Okey da wast voor nu
Edit:
voor de leesbaarheid even waar nodig phptags gezet
voor de leesbaarheid even waar nodig phptags gezet
PS: Was op gegeven moment de draad kwijt dus als het wazig overkomt kan dat kloppen :P
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
Quote:
Waarom?verder zou ik niet voor die get variabelen gaan. Daar kun je beter 2 hidden disabled fields voor posten
Quote:
Je hebt een punt, maar md5 is nou niet echt de oplossing.Verder zal ik me nooit op jou site registreren nu ik weet dat je geen wachtwoord encoding gebruikt, zie http://nl3.php.net/md5
@Merijn
Voer je code eens uit met error_reporting(E_ALL) en ini_set('display-errors', 1) bovenaan je pagina. Dan krijg je een waslijst met Notices. Je moet meer controles uitvoeren met isset().
Stel je zegt:
if ($_GET['xxx'] == 'yyy')
Als $_GET['xxx'] dan überhaupt niet bestaat gooit PHP een Notice (undefined index xxx, etc). Dit omdat je eerst moet controleren of $_GET['xxx'] echt bestaat, dus: if (isset($_GET['xxx']) && $_GET['xxx'] == 'yyy')
Verder moet je niet direct je $_POST-waardes in je query gooien. Google maar eens naar SQL injection. Zo kan je hele systeem gehackt worden als magic_quotes_gpc op je server uitstaat. Op de meeste servers staat dit (helaas voor goede programmeurs) wel aan, maar op goede servers staat het uit. En dan kan iedereen heel simpel je hele systeem mogelijk hacken en sowieso allerlei query's uitvoeren op je database.
Oplossing is om je $_POST-waardes in je query een functie als mysql_real_escape_string() te zetten. Zie ook php.net.
PHPerik schreef op 07.08.2008 09:37:
Quote:
Waarom?verder zou ik niet voor die get variabelen gaan. Daar kun je beter 2 hidden disabled fields voor posten
Persoonlijke voorkeur om eerlijk te zijn. Ik hou mn URL het liefst zo schoon mogelijk
PHPerik schreef op 07.08.2008 09:37:
Je hebt een punt, maar md5 is nou niet echt de oplossing.
Heb even een subtiele wijziging aangebracht. Verder is md5 nog altijd beter dan niets
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
Je kunt beter trim($_POST['var']) == "" gebruiken dan empty($_POST['var'])
empty() ziet '0' namelijk ook als leeg, terwijl bij sommige vragen 0 een goed antwoord is.
Ook zat ik eventueel te denken aan een javascript oplossing om iets versleuteld weg te schrijven naar de database.
En @Jacoo: Het komt inderdaad een beetje wazig over, maar toch wil ik je enorm bedanken. Ik kom er wel uit hoor.
@PHPerik: wat zou ik moeten doen om SQL injection te voorkomen? de magic quotes_gpc aanzetten, of toch mysql_real_escape_string() gebruiken?
@Douwe M: Bedankt. Ik denk dat ik het ook ga toepassen. Maar het zou niet echt nodig hoeven zijn denk ik.
In ieder geval al bedankt voor de reacties. Ik ga er nog even verder mee puzzelen.
Quote:
Ook zat ik eventueel te denken aan een javascript oplossing om iets versleuteld weg te schrijven naar de database
Nee dat doe je niet want javascript is clientside en kan uit :)
Een eerste check door javascript kan op zich alleen geen kwaad. Je hoeft namelijk niet meteen een nieuwe pagina te laden en je hoeft je server ook niet nog een keer aan te spreken.
Overigens is dit ook slechts een script welke eigenlijk nog uit gebreid moet worden mbt. gegevens. Maar daar kom ik later misschien nog even op terug.
Bij deze de verbeterde versie! Echter weet ik niet zeker of ik alles juist toe pas. Ik ben namelijk nog een nieuweling betreffende PHP. Wederom is alle feedback welkom!
ps. @Jacco: Je hulp is uiteraard welkom maar ik zou niet weten hoe ik mijn hele script zou moeten omzetten met de voorgestelde opties. Bij mij gaat het vaak wat omslachtig. Toch bedankt.
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
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
<?php
//errror reporting
error_reporting(E_ALL);
ini_set('display-errors', 1);
// als men zich wil registreren (nu met isset)
if (isset($_GET['actie']) && $_GET['actie'] == 'registreren')
{
// als formulier reeds is verstuurd (nu ook met isset)
if (isset($_GET['versturen']) && $_GET['versturen'] == 'ja')
{
//ipv. empty gebruik ik de functie trim om zo zeker te weten dat deze leeg is.
if (trim(($_POST['naam'] == "")))
{
echo "Je hebt geen naam ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
else if (trim(($_POST['wachtwoord'] == "")))
{
echo "Je hebt geen wachtwoord ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
else (if trim(($_POST['wachtwoord_controle'] == "")))
{
echo "Je moet ter controle ook het controleveld voor het wachtwoord invullen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
else {
if ($_POST['wachtwoord'] != $_POST['wachtwoord_controle'])
{
echo "De ingevoerde wachtwoorden kwamen niet overeen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
else {
// gebruik real escape string om SQL injection tegen te gaan.
$naam = mysql_real_escape_string($_POST['naam']);
$wachtwoord = mysql_real_escape_string($_POST['wachtwoord']);
//encryp het wachtwoord met MD5
$salt = 'Rg#1j.(7yHg]@gU';
$hash = md5($salt.$_POST['wachtwoord']);
// schrijf het weg in de database!! (weet ik alleen niet zeker of ik hier $wchtwoord moet gebruiken of $hash )
$registreer = "INSERT INTO gebruiker (naam, wachtwoord) VALUES ('".$naam."', '".$wachtwoord."')";
mysql_query($registreer);
if(mysql_query($registreer) && mysql_affected_rows() == 1)
{
echo "Uw gegevens zijn succesvol opgeslagen! Klik
<a href=\"login.php\">hier</a> om in te kunnen loggen.";
}
else
{
/* debugstatement */
echo "er is een fout opgetreden bij het aanmaken van je account op regel ".__LINE__.".<br />".mysql_error();
}
}
}
}
else {
}
}
// als formulier nog niet is verstuurd, toon registratieformulier
echo "
<div id=\"login\">
<h1>Registreren</h1>
<p>vul hieronder je gewenste gebruikersnaam en wachtwoord in.</p>
<form action=\"".$_SERVER['PHP_SELF']."?actie=registreren&versturen=ja\" method=\"post\">
<label>
<table width=\"200\" border=\"0\">
<tr>
<td><p>Gebruikersnaam:</p></td>
<td><input type=\"text\" name=\"naam\" size=\"15\"></td>
</tr>
<tr>
<td><p>Wachtwoord:</p></td>
<td><input type=\"password\" name=\"wachtwoord\" size=\"15\"></td>
</tr>
<tr>
<td><p>Wachtwoord ter controle:</p></td>
<td><input type=\"password\" name=\"wachtwoord_controle\" size=\"15\"></td>
</tr>
</table>
</label>
<input type='submit' name='submit' value='Registreer' />
</form>
</div>
";
?>
//errror reporting
error_reporting(E_ALL);
ini_set('display-errors', 1);
// als men zich wil registreren (nu met isset)
if (isset($_GET['actie']) && $_GET['actie'] == 'registreren')
{
// als formulier reeds is verstuurd (nu ook met isset)
if (isset($_GET['versturen']) && $_GET['versturen'] == 'ja')
{
//ipv. empty gebruik ik de functie trim om zo zeker te weten dat deze leeg is.
if (trim(($_POST['naam'] == "")))
{
echo "Je hebt geen naam ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
else if (trim(($_POST['wachtwoord'] == "")))
{
echo "Je hebt geen wachtwoord ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
else (if trim(($_POST['wachtwoord_controle'] == "")))
{
echo "Je moet ter controle ook het controleveld voor het wachtwoord invullen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
else {
if ($_POST['wachtwoord'] != $_POST['wachtwoord_controle'])
{
echo "De ingevoerde wachtwoorden kwamen niet overeen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
else {
// gebruik real escape string om SQL injection tegen te gaan.
$naam = mysql_real_escape_string($_POST['naam']);
$wachtwoord = mysql_real_escape_string($_POST['wachtwoord']);
//encryp het wachtwoord met MD5
$salt = 'Rg#1j.(7yHg]@gU';
$hash = md5($salt.$_POST['wachtwoord']);
// schrijf het weg in de database!! (weet ik alleen niet zeker of ik hier $wchtwoord moet gebruiken of $hash )
$registreer = "INSERT INTO gebruiker (naam, wachtwoord) VALUES ('".$naam."', '".$wachtwoord."')";
mysql_query($registreer);
if(mysql_query($registreer) && mysql_affected_rows() == 1)
{
echo "Uw gegevens zijn succesvol opgeslagen! Klik
<a href=\"login.php\">hier</a> om in te kunnen loggen.";
}
else
{
/* debugstatement */
echo "er is een fout opgetreden bij het aanmaken van je account op regel ".__LINE__.".<br />".mysql_error();
}
}
}
}
else {
}
}
// als formulier nog niet is verstuurd, toon registratieformulier
echo "
<div id=\"login\">
<h1>Registreren</h1>
<p>vul hieronder je gewenste gebruikersnaam en wachtwoord in.</p>
<form action=\"".$_SERVER['PHP_SELF']."?actie=registreren&versturen=ja\" method=\"post\">
<label>
<table width=\"200\" border=\"0\">
<tr>
<td><p>Gebruikersnaam:</p></td>
<td><input type=\"text\" name=\"naam\" size=\"15\"></td>
</tr>
<tr>
<td><p>Wachtwoord:</p></td>
<td><input type=\"password\" name=\"wachtwoord\" size=\"15\"></td>
</tr>
<tr>
<td><p>Wachtwoord ter controle:</p></td>
<td><input type=\"password\" name=\"wachtwoord_controle\" size=\"15\"></td>
</tr>
</table>
</label>
<input type='submit' name='submit' value='Registreer' />
</form>
</div>
";
?>
Gewijzigd op 01/01/1970 01:00:00 door Pieter Jansen
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
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
<?php
//errror reporting
error_reporting(E_ALL);
ini_set('display-errors', 1);
$error = false
// als men zich wil registreren (nu met isset)
if (isset($_GET['actie']) && $_GET['actie'] == 'registreren')
{
// als formulier reeds is verstuurd (nu ook met isset)
if (isset($_GET['versturen']) && $_GET['versturen'] == 'ja')
{
//ipv. empty gebruik ik de functie trim om zo zeker te weten dat deze leeg is.
if (trim(($_POST['naam'] == "")))
{
$error = true ;
echo "Je hebt geen naam ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
if (trim(($_POST['wachtwoord'] == "")))
{
$error = true ;
echo "Je hebt geen wachtwoord ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
if (trim($_POST['wachtwoord_controle']) == "")
{
$error = true ;
echo "Je moet ter controle ook het controleveld voor het wachtwoord invullen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
if ($_POST['wachtwoord'] != $_POST['wachtwoord_controle'] && $error == false)
{
echo "De ingevoerde wachtwoorden kwamen niet overeen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
if($error == false && $_SERVER["REQUEST_METHOD"] == "POST")
{
// gebruik real escape string om SQL injection tegen te gaan.
$naam = mysql_real_escape_string($_POST['naam']);
$wachtwoord = mysql_real_escape_string($_POST['wachtwoord']);
//encryp het wachtwoord met MD5
$salt = 'Rg#1j.(7yHg]@gU';
$hash = md5($salt.$_POST['wachtwoord']);
// schrijf het weg in de database!! (weet ik alleen niet zeker of ik hier $wchtwoord moet gebruiken of $hash )
$registreer = "INSERT INTO gebruiker (naam, wachtwoord) VALUES ('".$naam."', '".$wachtwoord."')";
if(mysql_query($registreer) && mysql_affected_rows() == 1)
{
echo "Uw gegevens zijn succesvol opgeslagen! Klik
<a href=\"login.php\">hier</a> om in te kunnen loggen.";
}
else
{
/* debugstatement */
echo "er is een fout opgetreden bij het aanmaken van je account op regel ".__LINE__.".<br />".mysql_error();
}
}
}
}
?>
<div id="login">
<h1>Registreren</h1>
<p>vul hieronder je gewenste gebruikersnaam en wachtwoord in.</p>
<form action="<?php echo $_SERVER["PHP_SELF"] ?>"?actie=registreren&versturen=ja" method="post">
<label>
<table width="200" border="0">
<tr>
<td><p>Gebruikersnaam:</p></td>
<td><input type="text" name="naam" size="15"></td>
</tr>
<tr>
<td><p>Wachtwoord:</p></td>
<td><input type="password" name="wachtwoord" size="15"></td>
</tr>
<tr>
<td><p>Wachtwoord ter controle:</p></td>
<td><input type="password" name="wachtwoord_controle" size="15"></td>
</tr>
</table>
</label>
<input type='submit' name='submit' value='Registreer' />
</form>
</div>
";
?>
//errror reporting
error_reporting(E_ALL);
ini_set('display-errors', 1);
$error = false
// als men zich wil registreren (nu met isset)
if (isset($_GET['actie']) && $_GET['actie'] == 'registreren')
{
// als formulier reeds is verstuurd (nu ook met isset)
if (isset($_GET['versturen']) && $_GET['versturen'] == 'ja')
{
//ipv. empty gebruik ik de functie trim om zo zeker te weten dat deze leeg is.
if (trim(($_POST['naam'] == "")))
{
$error = true ;
echo "Je hebt geen naam ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
if (trim(($_POST['wachtwoord'] == "")))
{
$error = true ;
echo "Je hebt geen wachtwoord ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
if (trim($_POST['wachtwoord_controle']) == "")
{
$error = true ;
echo "Je moet ter controle ook het controleveld voor het wachtwoord invullen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
if ($_POST['wachtwoord'] != $_POST['wachtwoord_controle'] && $error == false)
{
echo "De ingevoerde wachtwoorden kwamen niet overeen,
<a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
}
if($error == false && $_SERVER["REQUEST_METHOD"] == "POST")
{
// gebruik real escape string om SQL injection tegen te gaan.
$naam = mysql_real_escape_string($_POST['naam']);
$wachtwoord = mysql_real_escape_string($_POST['wachtwoord']);
//encryp het wachtwoord met MD5
$salt = 'Rg#1j.(7yHg]@gU';
$hash = md5($salt.$_POST['wachtwoord']);
// schrijf het weg in de database!! (weet ik alleen niet zeker of ik hier $wchtwoord moet gebruiken of $hash )
$registreer = "INSERT INTO gebruiker (naam, wachtwoord) VALUES ('".$naam."', '".$wachtwoord."')";
if(mysql_query($registreer) && mysql_affected_rows() == 1)
{
echo "Uw gegevens zijn succesvol opgeslagen! Klik
<a href=\"login.php\">hier</a> om in te kunnen loggen.";
}
else
{
/* debugstatement */
echo "er is een fout opgetreden bij het aanmaken van je account op regel ".__LINE__.".<br />".mysql_error();
}
}
}
}
?>
<div id="login">
<h1>Registreren</h1>
<p>vul hieronder je gewenste gebruikersnaam en wachtwoord in.</p>
<form action="<?php echo $_SERVER["PHP_SELF"] ?>"?actie=registreren&versturen=ja" method="post">
<label>
<table width="200" border="0">
<tr>
<td><p>Gebruikersnaam:</p></td>
<td><input type="text" name="naam" size="15"></td>
</tr>
<tr>
<td><p>Wachtwoord:</p></td>
<td><input type="password" name="wachtwoord" size="15"></td>
</tr>
<tr>
<td><p>Wachtwoord ter controle:</p></td>
<td><input type="password" name="wachtwoord_controle" size="15"></td>
</tr>
</table>
</label>
<input type='submit' name='submit' value='Registreer' />
</form>
</div>
";
?>
Zo had ik het ongeveer in gedachte :)
Oke dan! ik zal hem er eens tussenvoegen. Kijken of ik ook nog iets moet aanpassen in de CSS. Denk het niet maar zoals hij nu is zou hij moeten werken dan?
Want ik weet niet zeker of dat real escape string werkt en of de hash die ik gebruik bij MD5 ook goed werkt. Moet ik anders de $hash opslaan of gewoon $wachtwoord?