Regristratie probleem
Ik ben bezig met een registratie systeem, alleen nu heb ik 1 probleem nog.... Het probleem is: dat wanneer ik de controle op de dubbel wachtwoord uitvoer zegt het na het klikken op de registratie button dat de wachtwoorden niet overeen komen(dit is goed) maar toch staat daaronder de melding van SUCCES je bent aangemeld hoe kan ik ervoor zorgen dat hij alleen de melding laat zien van wachtwoorden komen niet overeen en dat het niet wordt weggeschreven naar de database!
Alvast bedankt voor de moeite!
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
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
<?php
if(!empty($_POST['username']) && !empty($_POST['password']) && !empty($_POST['email']) && !empty($_POST['password_check']))
{
$username = mysql_real_escape_string($_POST['username']);
$password = md5(mysql_real_escape_string($_POST['password']));
$email = mysql_real_escape_string($_POST['email']);
$password_check = md5(mysql_real_escape_string($_POST['password_check']));
$checkusername = mysql_query("SELECT * FROM users WHERE Username = '".$username."'");
$checkemail = mysql_query("SELECT * FROM users WHERE EmailAddress = '".$email."'");
if(mysql_num_rows($checkemail) == 1)
{
echo "<h1>Error</h1>";
echo "<p>Sorry, de email is al in gebruik. Ga terug en probeer opnieuw.</p>". header( "refresh:3;");
}
if($_POST['password'] !== $_POST['password_check']);
{
echo "Wachtwoorden komen niet overeen";
}
if(mysql_num_rows($checkusername) == 1)
{
echo "<h1>Error</h1>";
echo "<p>Sorry, De gebruikersnaam is al in gebruik. Ga terug en probeer opnieuw.</p>";//. header( "refresh:3;");
}
else
{
$registerquery = mysql_query("INSERT INTO users (Username, Password, Password_check, EmailAddress) VALUES('".$username."', '".$password."', '".$password_check."', '".$email."')");
}
if($registerquery)
{
echo "<h1>Success</h1>";
echo "<p>Je account is aangemaakt. <a href='index.php'>Klik hier</a> om in te loggen of wacht een aantal seconden.</p>"; //. header( "refresh:3;url=index.php" );
}
else
{
echo "<h1>Error</h1>";
echo "<p>Sorry, je regristratie is mislukt. Ga terug en probeer opnieuw.</p>";//. header( "refresh:3;url=register.php" );
}
}
else
{
?>
if(!empty($_POST['username']) && !empty($_POST['password']) && !empty($_POST['email']) && !empty($_POST['password_check']))
{
$username = mysql_real_escape_string($_POST['username']);
$password = md5(mysql_real_escape_string($_POST['password']));
$email = mysql_real_escape_string($_POST['email']);
$password_check = md5(mysql_real_escape_string($_POST['password_check']));
$checkusername = mysql_query("SELECT * FROM users WHERE Username = '".$username."'");
$checkemail = mysql_query("SELECT * FROM users WHERE EmailAddress = '".$email."'");
if(mysql_num_rows($checkemail) == 1)
{
echo "<h1>Error</h1>";
echo "<p>Sorry, de email is al in gebruik. Ga terug en probeer opnieuw.</p>". header( "refresh:3;");
}
if($_POST['password'] !== $_POST['password_check']);
{
echo "Wachtwoorden komen niet overeen";
}
if(mysql_num_rows($checkusername) == 1)
{
echo "<h1>Error</h1>";
echo "<p>Sorry, De gebruikersnaam is al in gebruik. Ga terug en probeer opnieuw.</p>";//. header( "refresh:3;");
}
else
{
$registerquery = mysql_query("INSERT INTO users (Username, Password, Password_check, EmailAddress) VALUES('".$username."', '".$password."', '".$password_check."', '".$email."')");
}
if($registerquery)
{
echo "<h1>Success</h1>";
echo "<p>Je account is aangemaakt. <a href='index.php'>Klik hier</a> om in te loggen of wacht een aantal seconden.</p>"; //. header( "refresh:3;url=index.php" );
}
else
{
echo "<h1>Error</h1>";
echo "<p>Sorry, je regristratie is mislukt. Ga terug en probeer opnieuw.</p>";//. header( "refresh:3;url=register.php" );
}
}
else
{
?>
Is een elseif niet een beter idee voor je statements?
- Aar - op 01/05/2013 11:34:03:
Is een elseif niet een beter idee voor je statements?
Als je mij kan uitleggen hoe ik dat regel ? Heb niet heel veel verstand van PHP
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
$errors = array();
if (form is submitted) {
if (username is not correct) {
$errors[] = 'De gebruikers naam is niet geldig';
}
if (wachtwords are not equal) {
$errors[] = 'De wachtwoorden komen niet overeen';
}
if (email is not valid) {
$errors[] = 'Geen geldig email adres';
}
if (0 === count($errors)) {
// geen errors gevonden, execute query
}
}
?>
$errors = array();
if (form is submitted) {
if (username is not correct) {
$errors[] = 'De gebruikers naam is niet geldig';
}
if (wachtwords are not equal) {
$errors[] = 'De wachtwoorden komen niet overeen';
}
if (email is not valid) {
$errors[] = 'Geen geldig email adres';
}
if (0 === count($errors)) {
// geen errors gevonden, execute query
}
}
?>
En dan ergens boven je form:
Code (php)
Mocht je iets niet begrijpen: Stel alsjeblieft vragen, code kopieren zonder het volledig te begrijpen is het slechtste wat je kan doen.
Nog wat andere tips:
- Ik mis foutafhandeling (kijk een naar http://wouterj.github.io/sql-boilerplate )
- md5 is niet meer veilig, gebruik liever een hoge sha* functie (sha256 bijv.)
- wanneer je een hash functie gebruikt is mysql_real_escape_string niet meer nodig