Het registreren
Het registreren kan via een normaal simpel HTML formulier.
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?
// maak de database connectie
if (!@mysql_select_db("database_naam", @mysql_connect("localhost", "database_user", "database_pass")))
{
echo "Er kon geen connectie worden gemaakt met de database.";
exit();
}
// functie om het e-mail adres te controleren op geldigheid
// ten eerste of de parameters goed zijn
// ten tweede of het domein achter het apestaartje bestaat
function check_email($mail)
{
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
{
$email_adres = $mail;
$email = explode("@", $email_adres);
if (gethostbyname($email[1]) == $email[1])
$valid = "no";
}
else
$valid = "no";
return $valid;
}
// functie om een random key aan te maken
function makekey($num)
{
// genereer het random paswoord
mt_srand((double)microtime()*1000000);
// loop totdat het $pass(woord) dezelfde lengte heeft als $num
while (strlen($pass) <= $num)
{
$i = chr(mt_rand (0,255));
if (eregi("^[a-z0-9]$", $i))
$pass = $pass.$i;
}
// return het random paswoord
return ($pass);
}
// defineer de tabel in een variabele
$table = "voorbeeld_gebruikers";
// defineer het activatie URL adres
// BEGIN DE ACTIVATIE URL MET HTTP://!
// EINDIG DE ACTIVATIE URL --ZONDER-- SLASH (/)
$activatie_url = "http://www.phphulp.nl/voorbeeld/activatie";
// bekijk of de username al niet in gebruik is
if ($HTTP_POST_VARS["submit"] && $HTTP_POST_VARS["login"] && $HTTP_POST_VARS["pass"] && $HTTP_POST_VARS["email"] && !check_email($HTTP_POST_VARS["email"]))
{
$sql = "SELECT id FROM $table WHERE login = '$HTTP_POST_VARS[login]'";
$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
$usrname = 1;
}
// bekijk of alle velden zijn ingevuld
if ($usrname || !$HTTP_POST_VARS["submit"] || !$HTTP_POST_VARS["login"] || !$HTTP_POST_VARS["pass"] || !$HTTP_POST_VARS["email"] || check_email($HTTP_POST_VARS["email"]))
{
if ($HTTP_POST_VARS["submit"])
echo "<p><b>U heeft niet alle velden ingevuld, uw e-mail adres is niet juist of de login naam is al in gebruik.</b></p>";
echo "
<html>
<head>
<title>Registreren</title>
</head>
<body>
<form method=\"post\" action=\"$PHP_SELF\">
Login naam:<br>
<input type=\"text\" name=\"login\" size=\"20\" maxlength=\"20\"><br>
Wachtwoord:<br>
<input type=\"text\" name=\"pass\" size=\"20\" maxlength=\"20\"><br>
E-mail adres:<br>
<input type=\"text\" name=\"email\" size=\"20\"><br>
<input type=\"submit\" name=\"submit\" value=\"Registreren\">
</form>
</body>
</html>";
}
// je weet nu dat alle velden ingevuld zijn
else
{
$insert_login = addslashes($HTTP_POST_VARS[login]);
$insert_pass = md5($HTTP_POST_VARS[pass]);
$key = makekey(5);
// zet de gegevens in de database
$sql = "INSERT INTO $table (id, login, pass, email, activeer) VALUES ('', '$insert_login', '$insert_pass', '$HTTP_POST_VARS[email]', '$key')";
$res = mysql_query($sql);
// kijk of het invoegen in de database goed ging
if ($res)
{
$aan = $HTTP_POST_VARS[email];
$subject = "Account activatie";
$van = "Webmaster <[email protected]>";
$bericht = "===========================================\n";
$bericht .= "Account activeren\n";
$bericht .= "===========================================\n\n";
$bericht .= "Uw account is aangemaakt. Het moet alleen nog even \n";
$bericht .= "geactiveerd worden.\n\n";
$bericht .= "Uw login naam: $HTTP_POST_VARS[login]\n";
$bericht .= "Uw wachtwoord: $HTTP_POST_VARS[pass]\n\n";
$bericht .= "Uw wachtwoord is encrypted opgeslagen en kan dus \n";
$bericht .= "niet worden opgevragen. Schrijft u uw wachtwoord \n";
$bericht .= "daarom op.\n\n";
$bericht .= "Activatie URL:\n";
$bericht .= "$activatie_url/activeer.php?email=$aan&key=$key\n\n";
$bericht .= "Bedankt voor het registreren.\n\n";
$bericht .= "===========================================\n";
$bericht .= "Einde automatisch gegenereerde bericht\n";
$bericht .= "===========================================";
// kijk of de e-mail verstuurd kan worden
if (mail($aan, $subject, $bericht, "From: $van"))
{
echo "<p>Uw account is aangemaakt maar u kunt nog niet inloggen.</p>";
echo "<p>Er is een bevestigings e-mail gestuurd met een URL adres. U moet uw ";
echo "account eerst activeren voordat u kunt inloggen.</p>";
}
// als het e-mail niet verstuurd kan worden, geef dan een error bericht
else
{
echo "<p>Uw account is aangemaakt maar er kon geen e-mail verstuurd worden.</p>";
echo "<p>Probeert u het opnieuw. Krijgt u dan nog steeds niet de melding ";
echo "dat er een activatie e-mail is gestuurd, neemt u dan contact met ons op.</p>";
}
}
// als het niet goed ging
else
{
echo "<p>Uw account is niet aangemaakt.</p>";
echo "<p>Probeer het a.u.b. nogmaals. Werkt het vervolgens weer niet, neemt dan contact op.</p>";
}
}
?>
// maak de database connectie
if (!@mysql_select_db("database_naam", @mysql_connect("localhost", "database_user", "database_pass")))
{
echo "Er kon geen connectie worden gemaakt met de database.";
exit();
}
// functie om het e-mail adres te controleren op geldigheid
// ten eerste of de parameters goed zijn
// ten tweede of het domein achter het apestaartje bestaat
function check_email($mail)
{
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
{
$email_adres = $mail;
$email = explode("@", $email_adres);
if (gethostbyname($email[1]) == $email[1])
$valid = "no";
}
else
$valid = "no";
return $valid;
}
// functie om een random key aan te maken
function makekey($num)
{
// genereer het random paswoord
mt_srand((double)microtime()*1000000);
// loop totdat het $pass(woord) dezelfde lengte heeft als $num
while (strlen($pass) <= $num)
{
$i = chr(mt_rand (0,255));
if (eregi("^[a-z0-9]$", $i))
$pass = $pass.$i;
}
// return het random paswoord
return ($pass);
}
// defineer de tabel in een variabele
$table = "voorbeeld_gebruikers";
// defineer het activatie URL adres
// BEGIN DE ACTIVATIE URL MET HTTP://!
// EINDIG DE ACTIVATIE URL --ZONDER-- SLASH (/)
$activatie_url = "http://www.phphulp.nl/voorbeeld/activatie";
// bekijk of de username al niet in gebruik is
if ($HTTP_POST_VARS["submit"] && $HTTP_POST_VARS["login"] && $HTTP_POST_VARS["pass"] && $HTTP_POST_VARS["email"] && !check_email($HTTP_POST_VARS["email"]))
{
$sql = "SELECT id FROM $table WHERE login = '$HTTP_POST_VARS[login]'";
$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
$usrname = 1;
}
// bekijk of alle velden zijn ingevuld
if ($usrname || !$HTTP_POST_VARS["submit"] || !$HTTP_POST_VARS["login"] || !$HTTP_POST_VARS["pass"] || !$HTTP_POST_VARS["email"] || check_email($HTTP_POST_VARS["email"]))
{
if ($HTTP_POST_VARS["submit"])
echo "<p><b>U heeft niet alle velden ingevuld, uw e-mail adres is niet juist of de login naam is al in gebruik.</b></p>";
echo "
<html>
<head>
<title>Registreren</title>
</head>
<body>
<form method=\"post\" action=\"$PHP_SELF\">
Login naam:<br>
<input type=\"text\" name=\"login\" size=\"20\" maxlength=\"20\"><br>
Wachtwoord:<br>
<input type=\"text\" name=\"pass\" size=\"20\" maxlength=\"20\"><br>
E-mail adres:<br>
<input type=\"text\" name=\"email\" size=\"20\"><br>
<input type=\"submit\" name=\"submit\" value=\"Registreren\">
</form>
</body>
</html>";
}
// je weet nu dat alle velden ingevuld zijn
else
{
$insert_login = addslashes($HTTP_POST_VARS[login]);
$insert_pass = md5($HTTP_POST_VARS[pass]);
$key = makekey(5);
// zet de gegevens in de database
$sql = "INSERT INTO $table (id, login, pass, email, activeer) VALUES ('', '$insert_login', '$insert_pass', '$HTTP_POST_VARS[email]', '$key')";
$res = mysql_query($sql);
// kijk of het invoegen in de database goed ging
if ($res)
{
$aan = $HTTP_POST_VARS[email];
$subject = "Account activatie";
$van = "Webmaster <[email protected]>";
$bericht = "===========================================\n";
$bericht .= "Account activeren\n";
$bericht .= "===========================================\n\n";
$bericht .= "Uw account is aangemaakt. Het moet alleen nog even \n";
$bericht .= "geactiveerd worden.\n\n";
$bericht .= "Uw login naam: $HTTP_POST_VARS[login]\n";
$bericht .= "Uw wachtwoord: $HTTP_POST_VARS[pass]\n\n";
$bericht .= "Uw wachtwoord is encrypted opgeslagen en kan dus \n";
$bericht .= "niet worden opgevragen. Schrijft u uw wachtwoord \n";
$bericht .= "daarom op.\n\n";
$bericht .= "Activatie URL:\n";
$bericht .= "$activatie_url/activeer.php?email=$aan&key=$key\n\n";
$bericht .= "Bedankt voor het registreren.\n\n";
$bericht .= "===========================================\n";
$bericht .= "Einde automatisch gegenereerde bericht\n";
$bericht .= "===========================================";
// kijk of de e-mail verstuurd kan worden
if (mail($aan, $subject, $bericht, "From: $van"))
{
echo "<p>Uw account is aangemaakt maar u kunt nog niet inloggen.</p>";
echo "<p>Er is een bevestigings e-mail gestuurd met een URL adres. U moet uw ";
echo "account eerst activeren voordat u kunt inloggen.</p>";
}
// als het e-mail niet verstuurd kan worden, geef dan een error bericht
else
{
echo "<p>Uw account is aangemaakt maar er kon geen e-mail verstuurd worden.</p>";
echo "<p>Probeert u het opnieuw. Krijgt u dan nog steeds niet de melding ";
echo "dat er een activatie e-mail is gestuurd, neemt u dan contact met ons op.</p>";
}
}
// als het niet goed ging
else
{
echo "<p>Uw account is niet aangemaakt.</p>";
echo "<p>Probeer het a.u.b. nogmaals. Werkt het vervolgens weer niet, neemt dan contact op.</p>";
}
}
?>
Voorbeeld: www.phphulp.nl/voorbeeld/activatie/registreren.php
« vorige pagina | volgende pagina »