Register Test
Het is weer een lange tijd geleden dat ik online ben geweest hier bij phphulp. Hier heb ik de volgende vraag.
Ik ben bezig geweest met mijn loginsysteem vandaag en heb de registersysteem af. Nu wou ik vragen of mensen de codes kunnen bekijken. Omdat het misschien niet fijn is om alles te copieren heb ik het in 2 zipbestanden staan. De ene is met commentaar en de andere niet.
Ik zou het zeer leuk vinden als jullie het kunnen bekijken en testen.
#Commentaar zipje:
http://home.skyaccess.nl/d2bols01/register-com.zip
#Geen Commentaar zipje:
http://home.skyaccess.nl/d2bols01/register-nocom.zip
#Verder op staat nu ook de code...
Denk eraan het is alleen de registratiemodule, inlogmodule is voor mij van latere zorg.
Groeten,
Christian Bolster
Gewijzigd op 01/01/1970 01:00:00 door CB2thephp
OT: Waarom is een versie zonder commentaar nuttig?
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
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
<?php
/*Om gebruik van dit script te kunnen maken moet je mysql, php hebben.
*Bij php moet magic_qoutes_gpc uitstaan, als het aanstaat kan het grote
*gevolgen hebben met het script.
*/
if (!isset($_POST['action']) || !isset($_POST['user']) || !isset($_POST['pass']) || !isset($_POST['rpass'])) {
header ('location: register.php?error=01'); /*Geen geldige formulier verzonden.*/
exit();
} else {
/*Haal alle tags weg en trimt daarna alle lege plekken aan de kanten weg.*/
require_once 'functions.php';
$strip = array();
$strip['user'] = strip($_POST['user']);
$strip['pass'] = strip($_POST['pass']);
$strip['rpass'] = strip($_POST['rpass']);
unset($_POST);
$upregex = '^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$';
/*Checkt of username etc. leeg is of niet.*/
if (empty($strip['user']) || empty($strip['pass']) || empty($strip['rpass'])) {
header ('location: register.php?error=02'); /*Geen of niet alle velden zijn ingevuld.*/
exit();
/*Checkt of username etc. aan je lengte eisen voldoen.*/
} elseif (strlen($strip['user']) > 20 || strlen($strip['pass']) > 50 || strlen($strip['rpass']) > 50 || strlen($strip['pass']) < 6 || strlen($strip['rpass']) < 6){
header ('location: register.php?error=03'); /*Uw Wachtwoorden en/of Gebruikersnamen zijn te lang of te kort.*/
exit();
/*Checkt de string of het aan je regular expression eisen houdt.*/
} elseif(!ereg($upregex, $strip['user']) || !ereg($upregex, $strip['pass']) || !ereg($upregex, $strip['rpass'])) {
header ('location: register.php?error=04'); /*Uw Wachtwoorden en/of Gebruikersnamen houden zich niet aan onze regels.*/
exit();
} else {
$clean = array();
$clean['user'] = $strip['user'];
$clean['pass'] = $strip['pass'];
$clean['rpass'] = $strip['rpass'];
unset($strip);
if ($clean['pass'] != $clean['rpass']) {
header ('location: register.php?error=05'); /*Wachtwoorden matchen niet.*/
exit();
} else {
require_once 'conn.php';
$html = array();
$html['user'] = htmlentities($clean['user'], ENT_QUOTES);
$html['pass'] = htmlentities($clean['pass'], ENT_QUOTES);
unset($clean);
$mysql = array();
$mysql['pass'] = mysql_real_escape_string($html['pass']);
$mysql['user'] = mysql_real_escape_string($html['user']);
unset($html);
$sql1 = "INSERT INTO users (username, password) " .
"VALUES ('" . base64_encode($mysql['user']) . "','" . sha1($mysql['pass']) . "')";
$result = mysql_query($sql1, $conn);
switch (mysql_errno()) {
case 1062:
header ('location: register.php?error=06'); /*Gebruikersnaam bestaat al.*/
exit();
break;
case 0:
header ('refresh: 3; URL=register.php?error=no');
echo ('Account Created');
exit();
break;
default:
header ('refresh: 3; URL=register.php?error=07');
echo ('Could not create user account; ' . mysql_error()); /*Fout database*/
exit();
break;
}
}
}
}
?>
/*Om gebruik van dit script te kunnen maken moet je mysql, php hebben.
*Bij php moet magic_qoutes_gpc uitstaan, als het aanstaat kan het grote
*gevolgen hebben met het script.
*/
if (!isset($_POST['action']) || !isset($_POST['user']) || !isset($_POST['pass']) || !isset($_POST['rpass'])) {
header ('location: register.php?error=01'); /*Geen geldige formulier verzonden.*/
exit();
} else {
/*Haal alle tags weg en trimt daarna alle lege plekken aan de kanten weg.*/
require_once 'functions.php';
$strip = array();
$strip['user'] = strip($_POST['user']);
$strip['pass'] = strip($_POST['pass']);
$strip['rpass'] = strip($_POST['rpass']);
unset($_POST);
$upregex = '^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$';
/*Checkt of username etc. leeg is of niet.*/
if (empty($strip['user']) || empty($strip['pass']) || empty($strip['rpass'])) {
header ('location: register.php?error=02'); /*Geen of niet alle velden zijn ingevuld.*/
exit();
/*Checkt of username etc. aan je lengte eisen voldoen.*/
} elseif (strlen($strip['user']) > 20 || strlen($strip['pass']) > 50 || strlen($strip['rpass']) > 50 || strlen($strip['pass']) < 6 || strlen($strip['rpass']) < 6){
header ('location: register.php?error=03'); /*Uw Wachtwoorden en/of Gebruikersnamen zijn te lang of te kort.*/
exit();
/*Checkt de string of het aan je regular expression eisen houdt.*/
} elseif(!ereg($upregex, $strip['user']) || !ereg($upregex, $strip['pass']) || !ereg($upregex, $strip['rpass'])) {
header ('location: register.php?error=04'); /*Uw Wachtwoorden en/of Gebruikersnamen houden zich niet aan onze regels.*/
exit();
} else {
$clean = array();
$clean['user'] = $strip['user'];
$clean['pass'] = $strip['pass'];
$clean['rpass'] = $strip['rpass'];
unset($strip);
if ($clean['pass'] != $clean['rpass']) {
header ('location: register.php?error=05'); /*Wachtwoorden matchen niet.*/
exit();
} else {
require_once 'conn.php';
$html = array();
$html['user'] = htmlentities($clean['user'], ENT_QUOTES);
$html['pass'] = htmlentities($clean['pass'], ENT_QUOTES);
unset($clean);
$mysql = array();
$mysql['pass'] = mysql_real_escape_string($html['pass']);
$mysql['user'] = mysql_real_escape_string($html['user']);
unset($html);
$sql1 = "INSERT INTO users (username, password) " .
"VALUES ('" . base64_encode($mysql['user']) . "','" . sha1($mysql['pass']) . "')";
$result = mysql_query($sql1, $conn);
switch (mysql_errno()) {
case 1062:
header ('location: register.php?error=06'); /*Gebruikersnaam bestaat al.*/
exit();
break;
case 0:
header ('refresh: 3; URL=register.php?error=no');
echo ('Account Created');
exit();
break;
default:
header ('refresh: 3; URL=register.php?error=07');
echo ('Could not create user account; ' . mysql_error()); /*Fout database*/
exit();
break;
}
}
}
}
?>
Ik ken mensen die willen het liever zonder commentaar, omdat het dan overzichtelijker is.
#Code Edit 9:48AM,30-Augustus-2006
Gewijzigd op 01/01/1970 01:00:00 door CB2thephp
Doe na elke header("Location") een exit(). Dit voorkomt problemen met lege pagina's.
oke zal ik doen, ik heb trouwens nog 1 vraag is de beveiliging hoog genoeg.
Het werd een beetje leeg en ik wou toch wat meer horen wat er verbeterd kan worden.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sql = "SELECT username " .
"FROM users " .
"WHERE username = '" . $mysql['user'] . "'";
?>
$sql = "SELECT username " .
"FROM users " .
"WHERE username = '" . $mysql['user'] . "'";
?>
Je checkt momenteel alleen op username. Wat gebeurt er als twee leden dezelfde username hebben?
#code
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$sql = "SELECT username " .
"FROM users " .
"WHERE username = '" . $mysql['user'] . "'";
$result = mysql_query($sql, $conn)
or die ('Could not look up user information; ' . mysql_error());
//Kijk of de username al bestaat.
if (mysql_fetch_array($result)) {
header ('location: register.php?error=06'); //foutmelding
} else {
//Zet username etc in database.
$sql1 = "INSERT INTO users (username, password) " .
"VALUES ('" . $mysql['user'] . "','" . sha1($mysql['pass']) . "')";
mysql_query($sql1, $conn)
or die ('Could not create user account; ' . mysql_error()); //foutmelding
?>
$sql = "SELECT username " .
"FROM users " .
"WHERE username = '" . $mysql['user'] . "'";
$result = mysql_query($sql, $conn)
or die ('Could not look up user information; ' . mysql_error());
//Kijk of de username al bestaat.
if (mysql_fetch_array($result)) {
header ('location: register.php?error=06'); //foutmelding
} else {
//Zet username etc in database.
$sql1 = "INSERT INTO users (username, password) " .
"VALUES ('" . $mysql['user'] . "','" . sha1($mysql['pass']) . "')";
mysql_query($sql1, $conn)
or die ('Could not create user account; ' . mysql_error()); //foutmelding
?>
De while naar de select kijkt of er een waarde voorkwam, zo ja foutmelding.
Foutmeldingen zijn nog niet perfect weergeven sorry voordat.
Groeten,
Christian Bolster
In dat geval geeft je INSERT query een error 1062 als er dubbele records dreigen te ontstaan. De melding naar je gebruiker wordt dan ook iets specifieker. Het nummer van de foutmelding kun je checken met mysql_errno().
Ik had UNIQUE al aanstaan, maar over mysql_errno() had ik zo 1,2,3 niet van gehoord.
Bedankt weer wat geleerd.
grt.
Zou graag nog wat willen weten
wat wil je weten?
CB2thephp:
*bump*
Zou graag nog wat willen weten
Zou graag nog wat willen weten
Okee, nog een tip. Bovenaan je script doe je dit:
Code (php)
Je hoeft niet van alle waarden in je formulier te checken of ze wel gezet zijn. Het is voldoende om dit te doen:
Code (php)
Stel dat je een formulier hebt met twaalf velden, dan is dit handiger.
weer hartstikke bedankt ik zal het snel toepassen
Jan:
Stel dat je een formulier hebt met twaalf velden, dan is dit handiger.
Huh?
Dus als ik een formulier heb:
Naam:
Adres:
Telnr.:
En die zijn allemaal nodig voor de registratie, kijk ik of "Naam" wel geset is.
Als dat zo is zijn de anderen het ook?
Lijkt me niet?