registreer script laat registratie toe met lege velden
Hallo mede leden,
Ik heb een probleem en ik zie zo 1,2,3 niet waar het aan kan liggen.
Ik ben bezig met een registreer script te maken met een aantal controles erin
maar als ik geen velden in vul dan zegt het script alsnog je bent geregistreerd.
Dit is de code die ik nu heb.
De velden worden wel meegenomen dit gecontroleerd met var_dump($_POST).
Wie kan mij in de goede richting sturen en ook tips hoe het beter kan zijn welkom.
Met vriendelijke groet,
Thomas de Vries.
Ik heb een probleem en ik zie zo 1,2,3 niet waar het aan kan liggen.
Ik ben bezig met een registreer script te maken met een aantal controles erin
maar als ik geen velden in vul dan zegt het script alsnog je bent geregistreerd.
Dit is de code die ik nu heb.
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['register']))
{
if(empty($_POST['username']) || empty($_POST['pass1']) || empty($_POST['pass2']) || empty($_POST['email'])) //Controle op lege velden
{
$melding = "Je bent vergeten om een veld in te vullen";
}
if(!$email = checkmail($_POST['email']))//Controle op valid email
{
$melding = "Je email adres is niet geldig probeer opnieuw";
}
if($_POST['pass1'] !== $_POST['pass2']) //Controle of wachtwoorden overeen komen met elkaar
{
$melding = "Je wachtwoorden komen niet overeen probeer opnieuw!";
}
else
{
//Nog een laaste controle om te kijken of de user naam en ipadress en email adress al bestaan.
$sql_check = "SELECT login,email,IP,maxaccounts FROM users WHERE login = '".$mysqli->real_escape_string($_POST['username'])."'";
if(!$res_check = $mysqli->query($sql_check))
{
$dbfout = "Er ging iets mis met de connectie naar de database toe probeer opnieuw of neem contact met de beheerder op.";
}
else
{
$check = $res_check->fetch_object();
if($_POST['username'] == $check->login)
{
$melding = "Deze gebruikersnaam bestaat al probeer een andere!";
}
if($_POST['email'] == $check->email)
{
$melding = "Dit email adres is al in gebruik probeer een andere!";
}
//Kijken of er in de tabel registered ip het ip adress nog een keer voor komt.
$sql_check2 = "SELECT ip FROM registered_ip WHERE ip = '".$mysqli->real_escape_string($_SERVER['REMOTE_ADDR'])."'";
if(!$res_check2 = $mysqli->query($sql_check2))
{
$dbfout = "Er ging iets mis met de connectie naar de database toe probeer opnieuw of neem contact met de beheerder op.";
}
else
{
$check2 = $res_check2->fetch_object();
if($_SERVER['REMOTE_ADDR'] == $check2->ip)
{
$melding = "Sorry maar je mag niet meer dan met 1 ipadress spelen!";
}
else
{
$melding = "je bent geregristreerd.";
}
}
}
}
}
}
?>
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['register']))
{
if(empty($_POST['username']) || empty($_POST['pass1']) || empty($_POST['pass2']) || empty($_POST['email'])) //Controle op lege velden
{
$melding = "Je bent vergeten om een veld in te vullen";
}
if(!$email = checkmail($_POST['email']))//Controle op valid email
{
$melding = "Je email adres is niet geldig probeer opnieuw";
}
if($_POST['pass1'] !== $_POST['pass2']) //Controle of wachtwoorden overeen komen met elkaar
{
$melding = "Je wachtwoorden komen niet overeen probeer opnieuw!";
}
else
{
//Nog een laaste controle om te kijken of de user naam en ipadress en email adress al bestaan.
$sql_check = "SELECT login,email,IP,maxaccounts FROM users WHERE login = '".$mysqli->real_escape_string($_POST['username'])."'";
if(!$res_check = $mysqli->query($sql_check))
{
$dbfout = "Er ging iets mis met de connectie naar de database toe probeer opnieuw of neem contact met de beheerder op.";
}
else
{
$check = $res_check->fetch_object();
if($_POST['username'] == $check->login)
{
$melding = "Deze gebruikersnaam bestaat al probeer een andere!";
}
if($_POST['email'] == $check->email)
{
$melding = "Dit email adres is al in gebruik probeer een andere!";
}
//Kijken of er in de tabel registered ip het ip adress nog een keer voor komt.
$sql_check2 = "SELECT ip FROM registered_ip WHERE ip = '".$mysqli->real_escape_string($_SERVER['REMOTE_ADDR'])."'";
if(!$res_check2 = $mysqli->query($sql_check2))
{
$dbfout = "Er ging iets mis met de connectie naar de database toe probeer opnieuw of neem contact met de beheerder op.";
}
else
{
$check2 = $res_check2->fetch_object();
if($_SERVER['REMOTE_ADDR'] == $check2->ip)
{
$melding = "Sorry maar je mag niet meer dan met 1 ipadress spelen!";
}
else
{
$melding = "je bent geregristreerd.";
}
}
}
}
}
}
?>
De velden worden wel meegenomen dit gecontroleerd met var_dump($_POST).
Wie kan mij in de goede richting sturen en ook tips hoe het beter kan zijn welkom.
Met vriendelijke groet,
Thomas de Vries.
Gewijzigd op 08/02/2012 20:12:24 door Thomas de vries
Gesponsorde koppelingen:
Maak is van regel 10 en 14
elseif() in plaats van if()
elseif() in plaats van if()
Hallo Bas bedankt voor uw snelle reactie en ja dat zag ik dus niet meer en ook niet aan gedacht om eerlijk te zijn.
Dat was inderdaad de oplossing.
Dat was inderdaad de oplossing.
Mooi :)
let erop dat je dit ook op regel 33 en 39 doet ;) anders kom je hetzelfde probleem later nog eens tegen :P
let erop dat je dit ook op regel 33 en 39 doet ;) anders kom je hetzelfde probleem later nog eens tegen :P
Afgaande op Noppes: empty is geen goede manier om te controleren!
@bas ja daar was ik al achtergekomen.
@obelix en idefix
waarom is een empty geen goede controle? wat kan er mee gedaan worden
en hoe kan het bijvoorbeeld wel.
Ik zou het op prijs stellen want dan leer ik het gelijk goed.
@obelix en idefix
waarom is een empty geen goede controle? wat kan er mee gedaan worden
en hoe kan het bijvoorbeeld wel.
Ik zou het op prijs stellen want dan leer ik het gelijk goed.
ALs je met empty werkt dan kan je geen 00000 (nullen) invullen bijvoorbeeld. Kijk ook eens naar isset().
@santhe
Aah oke op die manier maar om als een user zich registreerd dan gaat een user neem ik niet aan een password van nullen invullen(hoop ik dan).
Maar om inderdaar het zekere voor het onzekere te nemen zal ik dit toch gaan vervangen.
Zal dit wel een goede afhandeling zijn?
if(isset($_POST['username']) == "" AND $_POST['pass1']) enz
Aah oke op die manier maar om als een user zich registreerd dan gaat een user neem ik niet aan een password van nullen invullen(hoop ik dan).
Maar om inderdaar het zekere voor het onzekere te nemen zal ik dit toch gaan vervangen.
Zal dit wel een goede afhandeling zijn?
if(isset($_POST['username']) == "" AND $_POST['pass1']) enz
Thomas de vries op 08/02/2012 22:46:01:
Zal dit wel een goede afhandeling zijn?
if(isset($_POST['username']) == "" AND $_POST['pass1']) enz
if(isset($_POST['username']) == "" AND $_POST['pass1']) enz
Nee. Een isset() geeft een true of false terug en dat is natuurlijk niet te vergelijken met "". En AND $_POST['pass1'] daar veronderstel je eigenlijk dat $_POST['pass1'] true of false is.



