Registratie script maken.
Als iemand wilt registreren betekent dat, dat er gegevens moeten worden toegevoegd aan de database. Zodat we de volgende keer ook nog weten dat iemand geregistreerd is en dus kan en mag inloggen.. We maken nu een pagina aan en die noemen we registreren.php ..
de opbouw van de query die hier voor nodig is ziet er als volgt uit:
INSERT INTO gebruiker (gebruiker_naam, gebruiker_wachtwoord, gebruiker_email, gebruiker_afbeelding)
Dat is natuurlijk nog geen complete query want er moeten waardes in de velden gebruiker_naam, gebruiker_wachtwoord, en gebruiker_email en gebruiker_afbeelding worden gezet. De query moet als hij klaar is ongeveer deze structuur hebben:
INSERT INTO gebruiker (gebruiker_naam, gebruiker_wachtwoord, gebruiker_email, gebruiker_afbeelding) VALUES ('marvin','wachtwoord','tutorial[at]marviins.nl','h**p://site.nl/plaatje.jpg');
Hoe krijgen we nou deze gewenste gegevens in die query?
dat gaan we hieronder stap voor stap doen..
Als eerste moeten we een pagina maken die uit 2 delen bestaat.. een invul deel (zodat de gebruiker iets kan invullen).. en een deel dat die gegevens verwerkt. Dat doen we met deze code:
Voordat de knop is ingedrukt moet er eerst een knop gemaakt worden die dus komt te staan in het onderste deel (want dat is het deel die we als eerste zien.. dat komt omdat we de bovenste helft natuurlijk pas zien ALS er een knop is ingedrukt die als naam heeft ‘registreer’..
we voegen de knop (inclusief invulformulier) toe aan het stukje script en dan wordt bovenstaand stukje dus gewijzigd naar:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(isset($_POST['registreer'])){
// als er op de knop ‘registreren’ is gedrukt willen we deze helft gebruiken
}else{
?>
<form action="registreren.php" method="POST">
Gebruikersnaam:<input type="text" name="gebruikersnaam">
Wachtwoord:<input type="password" name="wachtwoord1">
Wachtwoord nogmaals:<input type="password" name="wachtwoord2">
Emailadres:<input type="text" name="emailadres">
<input type="submit" name="registreer" value="Aanmelden">
</form>
<?php
}
?>
Zo het formulier is af.. hij stuurt de ingevulde gegevens naar registreren.php (naar zichzelf dus)..
Nu moeten we de gegevens verwerken in het bovenste deel..
dat zouden we kunnen doen met deze code:
2
3
4
5
6
7
8
9
10
$query = "INSERT INTO gebruiker (gebruiker_naam, gebruiker_wachtwoord, gebruiker_email, gebruiker_afbeelding)
VALUES('".$_POST['gebruikersnaam']."','".$_POST['wachtwoord1']."','".$_POST['emailadres']."');";
// de gegevens kunnen we opvangen door de $_POST te gebruiken met als naam de naam van het formulier
// veldje.. kijk maar naar het formulier van net.
$sql = mysql_query($query)or die(mysql_error());
// we voeren de query uit
echo 'U bent succesvol aangemeld. Hieronder kunt u inloggen:';
// en we zijn aangemeld..
?>
er is 1 HELE GROTE MAAAAR.. dit is totaal niet veilig.. want jij en ik weten allebei niet wat iemand intikt in het formulier..je moet vanaf dit moment voor ALTIJD onthouden dat je geen enkele variabele (bijvoorbeeld $_POST['gebruikersnaam']) rechtsreeks in je database stopt.. we moeten deze ALTIJD eerst controleren.
dit kun je doen met verschillende redenen:
- html codes eruit filteren
- tekens die je sql code kunnen beïnvloeden zoals ' en " eruit filteren
controleren kun je ook doen omdat je wil kijken of een email adres wel echt een email adres is en niet zomaar een willekeurige tekst.
in het registratie formulier gaan we diverse dingen controleren..
we beginnen met het email adres, daarvoor gebruiken we deze functie voor (van phphulp):
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function email_validator($email){
// hierboven staat $email, als we de functie aanroepen met email_validator('[email protected]')
// dan heeft $email dus de waarde [email protected]. de variabele $email is alleen maar geldig
// binnen deze functie dus hierbuiten is $email niet meer bekend
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email)){
// als de invoer voldoet aan bovenstaande eisen van een emailadres
// denk hierbij aan of er wel een @ in staat.. en of hij eindigd met minimaal 2, maximaal 4
// tekens na de laatste . dus bijvoorbeeld .com, .nl. eu, .fr dan wordt $geldig 'ja'
// en zoniet 'nee'
$geldig = 'ja';
}else{
$geldig = 'nee';
}
return $geldig;
// hiermee stuurt hij de waarde van $geldig terug naar de plaats waar de functie is aangeroepen
// dat zien we zometeen
}
?>
dat was nog niet zo moeilijk toch?
Ook moeten we kijken of de ingevulde gebruikersnaam al bezet is want dubbele namen willen we niet.
dat doen we met deze functie:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function gebruikersnaam_check($gebruikersnaam){
// de input ($gebruikersnaam) is weer de waarde die meegestuurd wordt met het vragen naar de functie
$gebruikersnaam_query = "SELECT gebruiker_naam FROM gebruiker WHERE gebruiker_naam='".$gebruikersnaam."';";
// we maken gewoon een query die alle gebruikers als uitkomst geeft die die naam hebben
$gebruikersnaam_sql = mysql_query($gebruikersnaam_query)or die(mysql_error());
// we voeren de qeury uit
if(mysql_num_rows($gebruikersnaam_sql) == 0){
// als het resultaat 0 is (dus niemand heet zo) dan zeggen we dat hij niet bezet is
$bezet = 'nee' ;
}else{
// als de uitkomst geen 0 is heeft iemand deze naam dus al en dan zeggen we dat hij bezet is
$bezet = 'ja';
}
return $bezet;
we sturen ja of nee terug naar de aanroep
}
?>
misschien denk je nu hoe je deze functies aan moet roepen maar dat wordt zometeen helemaal duidelijk..
we hebben n al 2 functies gemaakt.. er komt een 3e daarmee kijken we of het emailadres misschien al
gebruikt is want het is niet leuk als iemand zich 100 keer aanmeld.. dat doen we met een functie die bijna
hetzelfde is als de gebruikersnaam_check maar dan zoeken we op email adres.
2
3
4
5
6
7
8
9
10
11
12
function email_check($email){
$email_query = "SELECT gebruiker_email FROM gebruiker WHERE gebruiker_email='".$email."';";
$email_sql = mysql_query($email_query)or die(mysql_error());
if(mysql_num_rows($email_sql) == 0){
$bezet = 'nee';
}else{
$bezet = 'ja' ;
}
return $bezet;
}
?>
bij deze geef ik geen uitleg.. dit spreekt voor zich als je de vorige gebruikerscheck al hebt gezien.
dit waren voor het registreren eigenlijk de allerbelangrijkste checks..
nu gaan we door middel van een best lang stukje php alle gegevens bekijken voordat we het opslaan.
lees het commentaar en dan snap je het wel. lees het desnoods 2x
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
if(trim($_POST['gebruikersnaam']) == ""){
// we willen geen legen velden hebben in de database
// dus hier kijken we of het veldje gebruikersnaam uit
// het formulier van net wel ingevuld is.. trim haalt alles
// spaties voor en achter de string weg. dit is noodzakelijk
// want hierboven checken we of de string leeg is,
// als iemand daar alleen een spatie intikt is die niet meer leeg
// en komt die dus door de check terwijl die voor ons wel leeg
// lijkt dus daarom doen we trim erover heen dan kan dit truukje
// niet meer, maarja als die WEL ECHT ingevuld is gaat die
// naar de volgende zoniet krijg je deze melding:
echo 'U heeft geen gebruikersnaam ingevuld';
}elseif(gebruikersnaam_check($_POST['gebruikersnaam']) == 'ja'){
// kijk hier in deze regel roep je de functie die je net
// gemaakt heb aan. je zegt dan ga naar de functie
// gebruikersnaam_check en geef als input waarde $_POST['gebruikersnaam']
// de functie zal dus $_POST['gebruikersnaam'] in die
// $gebruikersnaam stoppen binnen de functie en dan krijgt hij
// die return waarde terug. als dit Ja is (dus bezet) dan deze melding:
echo 'Deze gebruikersnaam is al in gebruik, kies a.u.b een ander.';
}elseif($_POST['wachtwoord1'] != $_POST['wachtwoord2']){
// hier kijken we gewoon heel simpel of wachtwoord 1 en 2
// wel hetzelfde zijn ingetypt.. zoniet weer een melding:
echo 'De opgegeven wachtwoorden komen niet overeen';
}elseif($_POST['wachtwoord1'] == ""){
// als wachtwoord 1 leeg is moeten we ook een melding geven
// misschien denk je waarom ik dit niet bij wachtwoord 2 ook
// doe maar dat is niet nodig.. als wachtwoord1 leeg is
// krijg je toch al een melding. en als hij niet leeg is
// en wachtwoord2 wel.. dan zijn ze niet gelijk dus krijg
// je ook een melding, snapje?
echo 'Er zijn geen wachtwoord<b>en</b> opgegeven';
}elseif(email_validator($_POST['emailadres']) == 'nee'){
// hier roepen we weer een functie aan om het emailadres
// te controleren. als de return 'nee' is voldoet het adres
// niet aan de eisen die wij in de functie hebben vastgelegd
echo 'Het ingevulde emailadres is niet geldig';
}elseif(email_check($_POST['emailadres']) == 'ja'){
// nogmaals een functie aanroepen om te kijken of die
// misschien al bezet is..
echo 'Er is al iemand geregistreerd met dit emailadres.';
}else{
// en mocht nou ALLES hierboven goedgegaan zijn DAN (ja eindelijk)
// DAN mag het in de database gezet worden.
// hieronder volgt de query
$query = "
INSERT INTO gebruiker
(gebruiker_naam, gebruiker_wachtwoord, gebruiker_email)
VALUES
('".mysql_real_escape_string(trim($_POST['gebruikersnaam']))."',
'".md5($_POST['wachtwoord1'])."',
'".$_POST['emailadres']."');";
// mysql_real_escape_string gebruiken we om dingen als ' en "
// 'veilig' te maken voor de query (en database) mysql_real_escape_string
// maakt van een ' een \' en van " een \" dan weet de database
// dat het een speciaal teken is en geen SQL code.
// de md5() gebruiken we om het opgegeven wachtwoord te coderen
// met md5.. dit is veel veiliger in de database te zetten als het letterlijke
// wachtwoord
$sql = mysql_query($query)or die(mysql_error());
// we voeren de query uit en voila gebruiker is toegevoegd
echo 'U bent succesvol aangemeld. Hieronder kunt u inloggen:';
include('inloggen.php');
// als je bent geregistreerd mag je inloggen dus laten
// we de inlog pagina includen (die er nog niet is maar
// die gaan we nu maken...
}
?>
zo snap je het nog?
de registratie pagina is klaar en die komt er dus zo uit te zien
=============registreren.php================
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
error_reporting(E_ALL);
include('verbind.php');
if(isset($_POST['registreer'])){
function email_validator($email){
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
{$geldig = 'ja'; }
else{$geldig = 'nee';}
return $geldig;
}
function email_check($email){
$email_query = "SELECT gebruiker_email FROM gebruiker WHERE gebruiker_email='".$email."';";
$email_sql = mysql_query($email_query)or die(mysql_error());
if(mysql_num_rows($email_sql) == 0)
{$bezet = 'nee';}
else{$bezet = 'ja' ;}
return $bezet;
}
function gebruikersnaam_check($gebruikersnaam){
$gebruikersnaam_query = "SELECT gebruiker_naam FROM gebruiker WHERE gebruiker_naam='".$gebruikersnaam."';";
$gebruikersnaam_sql = mysql_query($gebruikersnaam_query)or die(mysql_error());
if(mysql_num_rows($gebruikersnaam_sql) == 0)
{$bezet = 'nee' ;}
else{$bezet = 'ja';}
return $bezet;
}
if(trim($_POST['gebruikersnaam']) == ""){
echo 'U heeft geen gebruikersnaam ingevuld';
}elseif(gebruikersnaam_check($_POST['gebruikersnaam']) == 'ja'){
echo 'Deze gebruikersnaam is al in gebruik, kies a.u.b een ander.';
}elseif($_POST['wachtwoord1'] != $_POST['wachtwoord2']){
echo 'De opgegeven wachtwoorden komen niet overeen';
}elseif($_POST['wachtwoord1'] == ""){
echo 'Er zijn geen wachtwoord<b>en</b> opgegeven';
}elseif(email_validator($_POST['emailadres']) == 'nee'){
echo 'Het ingevulde emailadres is niet geldig';
}elseif(email_check($_POST['emailadres']) == 'ja'){
echo 'Er is al iemand geregistreerd met dit emailadres.';
}else{
$query = "INSERT INTO gebruiker
(gebruiker_naam, gebruiker_wachtwoord, gebruiker_email)
VALUES
('".mysql_real_escape_string($_POST['gebruikersnaam'])."',
'".md5($_POST['wachtwoord1'])."',
'".$_POST['emailadres']."');";
$sql = mysql_query($query)or die(mysql_error());
echo 'U bent succesvol aangemeld. Hieronder kunt u inloggen:';
include('inloggen.php');
}
}else{
?>
<form action="registreren.php" method="POST">
<table>
<tr><td>Gebruikersnaam:</td><td><input type="text" name="gebruikersnaam" value=""></td></tr>
<tr><td>Wachtwoord:</td><td><input type="password" name="wachtwoord1" value=""></td></tr>
<tr><td>Wachtwoord nogmaals:</td><td><input type="password" name="wachtwoord2" value=""></td></tr>
<tr><td>Emailadres:</td><td><input type="text" name="emailadres" value=""></td></tr>
<tr><td></td><td><input type="submit" name="registreer" value="Aanmelden">
</table>
</form>
<?php
}
?>
===================================
op naar de volgende pagina ;-)
Inhoudsopgave
- Inleiding
- Database klaarmaken & scriptje voor verbinding sch
- Registratie script maken.
- Inlogpagina maken
- Maak topic
- Voeg topic toe
- Forum overzicht
- Index maken
- Bekijk topic
- Reactie Toevoegen
- Gebruikers pagina en verwijder pagina
- Tot slot
- o nog een pagina over =P