captcha
Ik heb een captcha in mijn gastenboek ingebouwd, enkel als ik een foute code over type dan post hij het bericht niet, maar dan geeft hij er geen melding op dat de code fout was. Nu staat er nog tans wel een echo in de else lus.
stukje van mijn code.
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
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
<?php
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
echo ' het kan zijn dat u een foute code heeft ingevoerd';
}
}
?>
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
echo ' het kan zijn dat u een foute code heeft ingevoerd';
}
}
?>
normaal moet hij mijn laatste echo toch tonen als ik een foute code in voer ?
Of doe ik iets fout ?
Al vast bedankt,
Joren
Gewijzigd op 01/01/1970 01:00:00 door Joren vh
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
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
<?php
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}
}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
echo ' het kan zijn dat u een foute code heeft ingevoerd';
}
} //wat doet deze hier?
?>
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}
}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
echo ' het kan zijn dat u een foute code heeft ingevoerd';
}
} //wat doet deze hier?
?>
zien we dat die else helemaal niet bij de captcha if hoort. Je zult dus nog een else aan moeten maken.
Ik zet nu een else onder die laatste }( waar jij zei wat doet die hier ?) en dan krijg ik een witte pagina.
Ik post even wat meer van mijn php gebeuren.
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
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
<?php
//zorgen dat de array met errors leeg is
$_SESSION['errors'] = array();
//velden die iet moeten worden na gekeken
$no_check = array('');
//loop alle elementen uit de $_POST array langs
foreach($_POST as $key => $value)
{
//spaties voor en achter input verwijderen
$value = trim($value);
//ingevulde waarden in een sessievariabele zetten
$_SESSION['input'] [$key] = mysql_real_escape_string($value);
//controle van verscillende velden
//velden waar geen controle hoeft uitgevoerd te worden overslaan
if (in_array($key, $no_check))
{
continue;
}
//controle op geldige naam( langer dan 3 tekens )
elseif($key == 'naam')
{
if(strlen($value) <= 3)
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je hebt geen naam of een te korte naam ingevuld.';
}
}
// Controle of rest van de velden ingevuld is.
else
{
if(empty($value))
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je bent vergeten het veld '.$key.' in te vullen.';
}
}
}
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
}
else {
echo 'u heeft een foute code in gevoerd';
}
?>
//zorgen dat de array met errors leeg is
$_SESSION['errors'] = array();
//velden die iet moeten worden na gekeken
$no_check = array('');
//loop alle elementen uit de $_POST array langs
foreach($_POST as $key => $value)
{
//spaties voor en achter input verwijderen
$value = trim($value);
//ingevulde waarden in een sessievariabele zetten
$_SESSION['input'] [$key] = mysql_real_escape_string($value);
//controle van verscillende velden
//velden waar geen controle hoeft uitgevoerd te worden overslaan
if (in_array($key, $no_check))
{
continue;
}
//controle op geldige naam( langer dan 3 tekens )
elseif($key == 'naam')
{
if(strlen($value) <= 3)
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je hebt geen naam of een te korte naam ingevuld.';
}
}
// Controle of rest van de velden ingevuld is.
else
{
if(empty($value))
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je bent vergeten het veld '.$key.' in te vullen.';
}
}
}
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
}
else {
echo 'u heeft een foute code in gevoerd';
}
?>
Dit is het hele stukje dat na kijkt of alles is ingevuld. Check is afkomstig van blanche !
Al vast bedankt !
Gewijzigd op 01/01/1970 01:00:00 door joren vh
Dus in die if/elseif/else constructie nog een elseif opnemen:
En vervolgens in dat statement de check uitvoeren of de ingevulde waarde wel overeenkomt met die uit de sessievariabele.
Of is jouw optie soms de enige want dan zal ik niet anders kunnen zeker
edit
Code (php)
Dit zou dan moeten werken volgens jou blanche ? even testen hé XD
edit 2 :
Ik doe dus het volgende een dan krijg ik een witte pagina, doe ik nog iets fout ik zie niets mis hoor !
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
//zorgen dat de array met errors leeg is
$_SESSION['errors'] = array();
//velden die iet moeten worden na gekeken
$no_check = array('');
//loop alle elementen uit de $_POST array langs
foreach($_POST as $key => $value)
{
//spaties voor en achter input verwijderen
$value = trim($value);
//ingevulde waarden in een sessievariabele zetten
$_SESSION['input'] [$key] = mysql_real_escape_string($value);
//controle van verscillende velden
//velden waar geen controle hoeft uitgevoerd te worden overslaan
if (in_array($key, $no_check))
{
continue;
}
//controle op geldige naam( langer dan 3 tekens )
elseif($key == 'naam')
{
if(strlen($value) <= 3)
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je hebt geen naam of een te korte naam ingevuld.';
}
}
elseif($key == 'norobot')
{
if(strlen($value) => 4)
{
$_SESSION['errors'][$key] = tru;
$errors[] = 'Je hebt een verkeerde code ingevuld';
}
}
// Controle of rest van de velden ingevuld is.
else
{
if(empty($value))
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je bent vergeten het veld '.$key.' in te vullen.';
}
}
}
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
}
?>
//zorgen dat de array met errors leeg is
$_SESSION['errors'] = array();
//velden die iet moeten worden na gekeken
$no_check = array('');
//loop alle elementen uit de $_POST array langs
foreach($_POST as $key => $value)
{
//spaties voor en achter input verwijderen
$value = trim($value);
//ingevulde waarden in een sessievariabele zetten
$_SESSION['input'] [$key] = mysql_real_escape_string($value);
//controle van verscillende velden
//velden waar geen controle hoeft uitgevoerd te worden overslaan
if (in_array($key, $no_check))
{
continue;
}
//controle op geldige naam( langer dan 3 tekens )
elseif($key == 'naam')
{
if(strlen($value) <= 3)
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je hebt geen naam of een te korte naam ingevuld.';
}
}
elseif($key == 'norobot')
{
if(strlen($value) => 4)
{
$_SESSION['errors'][$key] = tru;
$errors[] = 'Je hebt een verkeerde code ingevuld';
}
}
// Controle of rest van de velden ingevuld is.
else
{
if(empty($value))
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je bent vergeten het veld '.$key.' in te vullen.';
}
}
}
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
}
?>
Al vast bedankt hoor
Gewijzigd op 01/01/1970 01:00:00 door joren vh
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
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
<?php
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}
else
{
echo 'cpatcha ding';
}
}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
echo ' het kan zijn dat u een foute code heeft ingevoerd';
}
}
?>
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}
else
{
echo 'cpatcha ding';
}
}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
echo ' het kan zijn dat u een foute code heeft ingevoerd';
}
}
?>
@Joren: Is dit de voorwaarde waaraan de code moet voldoen?
Het lijkt me dat je de code wilt vergelijken met een waarde uit een sessievariabele toch?
Maar dat werkt niet, hij post niet naar de database maar hij geeft de melding niet.
Ik denk dat ik zal moeten doen zoals blanche zegt. Maar er gaat nog iets mis denk ik. Code staat in mijn vorige post !
Toch bedankt !
Maar als de code fout is moet hij dus ook een error geven !
edit :
is van de captcha zelf
Gewijzigd op 01/01/1970 01:00:00 door joren vh
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
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
<?php
//zorgen dat de array met errors leeg is
$_SESSION['errors'] = array();
//velden die iet moeten worden na gekeken
$no_check = array('');
//loop alle elementen uit de $_POST array langs
foreach($_POST as $key => $value)
{
//spaties voor en achter input verwijderen
$value = trim($value);
//ingevulde waarden in een sessievariabele zetten
$_SESSION['input'] [$key] = mysql_real_escape_string($value);
//controle van verscillende velden
//velden waar geen controle hoeft uitgevoerd te worden overslaan
if (in_array($key, $no_check))
{
continue;
}
//controle op geldige naam( langer dan 3 tekens )
elseif($key == 'naam')
{
if(strlen($value) <= 3)
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je hebt geen naam of een te korte naam ingevuld.';
}
}
elseif($key == 'norobot')
{
// Hier de controle van de captcha,
// Dus ook controleren of de ingevulde code juist is!
// Zo niet, foutmelding aan $errors toevoegen.
}
// Controle of rest van de velden ingevuld is.
else
{
if(empty($value))
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je bent vergeten het veld '.$key.' in te vullen.';
}
}
}
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
}
?>
//zorgen dat de array met errors leeg is
$_SESSION['errors'] = array();
//velden die iet moeten worden na gekeken
$no_check = array('');
//loop alle elementen uit de $_POST array langs
foreach($_POST as $key => $value)
{
//spaties voor en achter input verwijderen
$value = trim($value);
//ingevulde waarden in een sessievariabele zetten
$_SESSION['input'] [$key] = mysql_real_escape_string($value);
//controle van verscillende velden
//velden waar geen controle hoeft uitgevoerd te worden overslaan
if (in_array($key, $no_check))
{
continue;
}
//controle op geldige naam( langer dan 3 tekens )
elseif($key == 'naam')
{
if(strlen($value) <= 3)
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je hebt geen naam of een te korte naam ingevuld.';
}
}
elseif($key == 'norobot')
{
// Hier de controle van de captcha,
// Dus ook controleren of de ingevulde code juist is!
// Zo niet, foutmelding aan $errors toevoegen.
}
// Controle of rest van de velden ingevuld is.
else
{
if(empty($value))
{
$_SESSION['errors'][$key] = true;
$errors[] = 'Je bent vergeten het veld '.$key.' in te vullen.';
}
}
}
// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
//invoeren in database
mysql_query ("INSERT INTO gastenboek (naam, mail, bericht, datum, ip) VALUES ('". $naam ."', '".$mail."', '". $bericht ."', NOW(), '".$_SERVER['REMOTE_ADDR']."')") or die (mysql_error()); // Verwerk het formulier:
echo 'Uw bericht is succevol geplaatst';
echo '<meta http-equiv=refresh content="3; url=http://www.selectusedcars.be/joren/gastenboek.php">';
}
else
{
echo '<ul>';
foreach($errors as $error)
{
echo '<li>'.$error.'</li>';
}
echo '</ul>';
}
}
?>
ps. Zie mijn commentaar in de code...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Code (php)
bij //ga verder , moet ik dan gewoon continue; doen ?
Code (php)
Dat is toch immers de voorwaarde dat de captcha goed ingevuld is? De ingevulde code moet gelijk zijn aan de opgeslagen code...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Hartelijk dank voor je hulp !