captcha fout
Hier de relevante code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// dit gaat dus goed!
if ($_SERVER['REQUEST_METHOD'] != "POST"){
$_SESSION['code'] = "";
$code = code_generator(rand (4,5));
}
// hier komt het script niet lijkt het wel!
if ($_SERVER['REQUEST_METHOD'] == "POST" && !empty($errors)){
$_SESSION['code'] = "";
$code = code_generator(rand (4,5));
}
if (empty ($_SESSION['code'])){
$_SESSION['code'] = $code;
}
?>
// dit gaat dus goed!
if ($_SERVER['REQUEST_METHOD'] != "POST"){
$_SESSION['code'] = "";
$code = code_generator(rand (4,5));
}
// hier komt het script niet lijkt het wel!
if ($_SERVER['REQUEST_METHOD'] == "POST" && !empty($errors)){
$_SESSION['code'] = "";
$code = code_generator(rand (4,5));
}
if (empty ($_SESSION['code'])){
$_SESSION['code'] = $code;
}
?>
stukje verderop:
Code (php)
1
2
3
4
2
3
4
<?php
//dit zorgt voor de code in de captcha en genereerd een image.
captcha_generator ($_SESSION['code']);
?>
//dit zorgt voor de code in de captcha en genereerd een image.
captcha_generator ($_SESSION['code']);
?>
en weer verderop de captcha weergeven:
P.S. ik gebruik de array $errors om de errors in op te slaan en ik gebruik een POST form voor het verzenden van de gegevens.
Gewijzigd op 01/01/1970 01:00:00 door Jan Horden
hier heb ik zelf ook moeite mee
Als er nu een fout voorkomt maakt hij een nieuwe code, maar die nieuwe code slaat hij niet op in de $_SESSION, omdat deze nu wel al bestaat. Je controle is immers, alleen in de $_SESSION opslaan als deze nog niet bestaat. Probeer in plaats van die controle met empty eens
mijn form afhandeling ziet er als volgt uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'
&& (empty($_POST["gbnaam"])
|| empty($_POST["wachtwoord"])
|| empty($_POST["ww"])
|| empty($_POST["vnaam"])
|| empty($_POST["anaam"])
|| empty($_POST["email"])
|| empty($_POST["captcha"]))){
$errors[] = "Vul alle velden in aub!";
}
elseif ($_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST["gbnaam"])
&& isset($_POST["wachtwoord"])
&& isset($_POST["ww"])
&& isset($_POST["vnaam"])
&& isset($_POST["anaam"])
&& isset($_POST["email"])
&& isset($_POST["captcha"])){
//hier volgen dan wat if statements om de inputs te controleren op geldige waarden.
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST'
&& (empty($_POST["gbnaam"])
|| empty($_POST["wachtwoord"])
|| empty($_POST["ww"])
|| empty($_POST["vnaam"])
|| empty($_POST["anaam"])
|| empty($_POST["email"])
|| empty($_POST["captcha"]))){
$errors[] = "Vul alle velden in aub!";
}
elseif ($_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST["gbnaam"])
&& isset($_POST["wachtwoord"])
&& isset($_POST["ww"])
&& isset($_POST["vnaam"])
&& isset($_POST["anaam"])
&& isset($_POST["email"])
&& isset($_POST["captcha"])){
//hier volgen dan wat if statements om de inputs te controleren op geldige waarden.
?>
Hier heb ik in de elseif ook al een stuk geschreven als
Code (php)
maar dit had ook geen effect!
Wat wel effect heeft is als ik in elke if statement (wat er meer dan 10 zijn)
invul, maar dit moet toch korter kunnen!
@Ferluci
als ik er
van maak dan geeft ie een notice dat $code niet bestaat nadat ik het form verzend met een error! Wat dus bevestigd dat ie nooit
Code (php)
hier komt want dan zou $code gevuld zijn!
Ook moet dat empty() geen probleem geven want ik stel de SESSION['code'] telkens gelijk aan ""! waardoor die toch empty is?
Gewijzigd op 01/01/1970 01:00:00 door Jan Horden
Ik snap de logica niet.
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
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
<?php
if ($_SERVER['REQUEST_METHOD'] != "POST"){
$_SESSION['code'] = "";
$code = code_generator(rand (4,5));
}
if ($_SERVER['REQUEST_METHOD'] == "POST" && !empty($errors)){
$_SESSION['code'] = "";
$code = code_generator(rand (4,5));
}
if ($_SERVER['REQUEST_METHOD'] == 'POST'
&& (empty($_POST["gbnaam"])
|| empty($_POST["wachtwoord"])
|| empty($_POST["ww"])
|| empty($_POST["vnaam"])
|| empty($_POST["anaam"])
|| empty($_POST["email"])
|| empty($_POST["captcha"]))){
$errors[] = "Vul alle velden in aub!";
$_SESSION['code'] = "";
$code = code_generator(rand (4,5));
}
elseif ($_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST["gbnaam"])
&& isset($_POST["wachtwoord"])
&& isset($_POST["ww"])
&& isset($_POST["vnaam"])
&& isset($_POST["anaam"])
&& isset($_POST["email"])
&& isset($_POST["captcha"])){
$gbnaam = trim($_POST["gbnaam"]);
$wachtwoord = trim($_POST["wachtwoord"]);
$ww = trim($_POST["ww"]);
$vnaam = trim($_POST["vnaam"]);
$anaam = trim($_POST["anaam"]);
$email = trim($_POST["email"]);
//hier volgen dan wat if statements om de inputs te controleren op geldige waarden.
?>
if ($_SERVER['REQUEST_METHOD'] != "POST"){
$_SESSION['code'] = "";
$code = code_generator(rand (4,5));
}
if ($_SERVER['REQUEST_METHOD'] == "POST" && !empty($errors)){
$_SESSION['code'] = "";
$code = code_generator(rand (4,5));
}
if ($_SERVER['REQUEST_METHOD'] == 'POST'
&& (empty($_POST["gbnaam"])
|| empty($_POST["wachtwoord"])
|| empty($_POST["ww"])
|| empty($_POST["vnaam"])
|| empty($_POST["anaam"])
|| empty($_POST["email"])
|| empty($_POST["captcha"]))){
$errors[] = "Vul alle velden in aub!";
$_SESSION['code'] = "";
$code = code_generator(rand (4,5));
}
elseif ($_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST["gbnaam"])
&& isset($_POST["wachtwoord"])
&& isset($_POST["ww"])
&& isset($_POST["vnaam"])
&& isset($_POST["anaam"])
&& isset($_POST["email"])
&& isset($_POST["captcha"])){
$gbnaam = trim($_POST["gbnaam"]);
$wachtwoord = trim($_POST["wachtwoord"]);
$ww = trim($_POST["ww"]);
$vnaam = trim($_POST["vnaam"]);
$anaam = trim($_POST["anaam"]);
$email = trim($_POST["email"]);
//hier volgen dan wat if statements om de inputs te controleren op geldige waarden.
?>
in de elseif test ik meteen of de POST variabele geset zijn en dan ga ik ermee aan de slag! Anders moet ik voor elke POST variabele eerst alsnog gaan testen of ze geset zijn!
Maar ik zie nu in dat:
Code (php)
zo'n gek idee nog niet is idd!
Ik ga is kijken of ik het in deze setup werkend kan krijgen en of het me dan ook lukt met de captcha...
de captcha veranderd ook de code na een error nu!
thx allemaal voor de reacties!