captcha script voert querry uit terwijl de captcha niet correct is
ik heb dit script in elkaar gezet maar zit met het probleem dat de insert toch gebeurd ook al is de captcha niet correct hoe kan ik dit oplossen?
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
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
<?php
require_once('init.php');
require_once('header.php');
$message = array();
$redirect= $_POST['referer'];
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{ // plaats hier php code voor geslaagde captcha
$validated = true;
if($_POST['naam'] == ""){
$message .="<p> Je naam moet ingevuld zijn</p>";
} else {
$validated = false;
}
if($_POST['achternaam']== ""){
$message .="<p> Je achternaam moet ingevuld zijn</p>";
} else {
$validated = false;
}
if($_POST['email']== ""){
$message .="<p> Je emailadres moet ingevuld zijn</p>";
} else {
$validated = false;
if($_POST['gebruikersnaam']== ""){
$message .="<p> de gebruikersaam moet ingevuld zijn</p>";
} else {
$validated = false;
}
if($_POST['paswoord']== ""){
$message .="<p> Je paswoord moet ingevuld zijn</p>";
} else {
$validated = false;
}
}
//vaste waarden
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$newuser =" INSERT INTO GEBRUIKER (
gebruikersnaam,
paswoord,
naam,
achternaam,
email
)
VALUES (
'".mysql_real_escape_string($_POST['gebruikersnaam'])."',
'".mysql_real_escape_string($_POST['paswoord'])."',
'".mysql_real_escape_string($_POST['naam'])."',
'".mysql_real_escape_string($_POST['achternaam'])."',
'".mysql_real_escape_string($_POST['email'])."'
)";
if(!$res = mysql_query($newuser))
{
echo '<pre>';
echo mysql_error();
echo '</pre>';
}
else
{ // plaats hier php code voor gefaalde captcha
echo "voer het juiste getal in ";
}
}
?>
require_once('init.php');
require_once('header.php');
$message = array();
$redirect= $_POST['referer'];
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{ // plaats hier php code voor geslaagde captcha
$validated = true;
if($_POST['naam'] == ""){
$message .="<p> Je naam moet ingevuld zijn</p>";
} else {
$validated = false;
}
if($_POST['achternaam']== ""){
$message .="<p> Je achternaam moet ingevuld zijn</p>";
} else {
$validated = false;
}
if($_POST['email']== ""){
$message .="<p> Je emailadres moet ingevuld zijn</p>";
} else {
$validated = false;
if($_POST['gebruikersnaam']== ""){
$message .="<p> de gebruikersaam moet ingevuld zijn</p>";
} else {
$validated = false;
}
if($_POST['paswoord']== ""){
$message .="<p> Je paswoord moet ingevuld zijn</p>";
} else {
$validated = false;
}
}
//vaste waarden
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$newuser =" INSERT INTO GEBRUIKER (
gebruikersnaam,
paswoord,
naam,
achternaam,
)
VALUES (
'".mysql_real_escape_string($_POST['gebruikersnaam'])."',
'".mysql_real_escape_string($_POST['paswoord'])."',
'".mysql_real_escape_string($_POST['naam'])."',
'".mysql_real_escape_string($_POST['achternaam'])."',
'".mysql_real_escape_string($_POST['email'])."'
)";
if(!$res = mysql_query($newuser))
{
echo '<pre>';
echo mysql_error();
echo '</pre>';
}
else
{ // plaats hier php code voor gefaalde captcha
echo "voer het juiste getal in ";
}
}
?>
alvast bedankt voor jullie hulp
Vind je het gek als je hem pas bij de else op false zet?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
if(!$res = mysql_query($newuser)){
echo '<pre>';
echo mysql_error();
echo '</pre>';
} else { // plaats hier php code voor gefaalde captcha
echo "voer het juiste getal in ";
}
?>
if(!$res = mysql_query($newuser)){
echo '<pre>';
echo mysql_error();
echo '</pre>';
} else { // plaats hier php code voor gefaalde captcha
echo "voer het juiste getal in ";
}
?>
Hier voer jij de INSERT-query uit en controleer je of deze is gelukt, FALSE of TRUE. Bij een FALSE is de query mislukt, syntax-fout, bij een TRUE roep jij dat de captcha niet goed is. Deze conclusie slaat helemaal nergens op!
Jij controleert nergens of de code correct is, dit kan dus ook nooit goed of fout zijn. Lijkt mij vrij logisch.
De INSERT-query zal vrijwel altijd lukken, tenzij je nog constraints op de kolommen hebt zitten. Daar valt zo niets over te zeggen, ik ken jouw datamodel niet.
Oplossing: Ga de juiste logica inbouwen.
heel erg bedankt voor de moeite
Paul
Code (php)
Die else die daar staat, hoort bij de eerste if en niet bij de 2e. Het verhaal van de captcha-fout, moet dus in een else komen te staan die je toevoegt aan de huidige code. De else die je nu al hebt, ga je vervangen door een mededeling dat de gegevens correct zijn opgeslagen.
Ps.
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
dit gooi je natuurlijk met bruut geweld richting de prullenbak! Je doet er niets mee en je vraagt om een hoop problemen. Wat wil je hiermee bereiken?
Maar als je tog bij elke if-statement (en else) een foutmelding teruggeeft, dan zeg je tog nooit dat het goed is.. of zit ik mis..
Arjan Schuurman schreef op 18.06.2007 23:53:
Met een if-else krijg je een TRUE of FALSE retour. Het is aan jou om te bepalen wat nu goed is en wat nu fout is. Het is aan te raden om altijd zowel een if als een else te gebruiken, dan is het duidelijk wat de status is. Het is vooral handig bij debuggen, daar waar je nu ook mee bezig bent.Maar als je tog bij elke if-statement (en else) een foutmelding teruggeeft, dan zeg je tog nooit dat het goed is.. of zit ik mis..
Maar werk voor jezelf eerst eens een eenvoudig voorbeeldje uit en ga daarna de problemen met de captcha oplossen. Het is veel belangrijker dat je snapt hoe het werkt dan dat je een oplossing hebt die je niet snapt. Snappie?
Succes!
Jan Koehoorn schreef op 18.06.2007 23:42:
bedankt voor jullie hulp
Paul