captcha

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joren vh

joren vh

30/12/2007 12:11:00
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
    }
}

?>


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
 
PHP hulp

PHP hulp

16/04/2024 22:07:18
 
PHP Newbie

PHP Newbie

31/12/2007 02:34:00
Quote Anchor link
Als we de code even netjes laten inspringen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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?
?>


zien we dat die else helemaal niet bij de captcha if hoort. Je zult dus nog een else aan moeten maken.
 
Joren vh

joren vh

31/12/2007 11:51:00
Quote Anchor link
Die ene } komt nog van wat hoger.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
        }

?>


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
 
Joren de Wit

Joren de Wit

31/12/2007 12:06:00
Quote Anchor link
Het lijkt me dat je de controle van de ingevulde code, ook in de foreach loop wilt doen.

Dus in die if/elseif/else constructie nog een elseif opnemen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
elseif($key == 'norobot')
?>

En vervolgens in dat statement de check uitvoeren of de ingevulde waarde wel overeenkomt met die uit de sessievariabele.
 
Joren vh

joren vh

31/12/2007 12:08:00
Quote Anchor link
Nee dat wil ik eigenlijk niet blanche mijn controle werkt goed zo enkel als ik een foute in vul moet hij gewoon nog foute code echo 'en. Maar als ik dan een else aan maak dan krijg ik een witte pagina ( zie code hier boven )

Of is jouw optie soms de enige want dan zal ik niet anders kunnen zeker

edit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
elseif($key == 'norobot')
        {

            if(strlen($value) => 4)
            {

                $_SESSION['errors'][$key] = tru;
                $errors[] = 'Je hebt een verkeerde code ingevuld';
            }
        }

?>


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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
    }
}

?>


Al vast bedankt hoor
Gewijzigd op 01/01/1970 01:00:00 door joren vh
 
PHP Newbie

PHP Newbie

31/12/2007 12:21:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
    }
}

?>
 
Joren de Wit

Joren de Wit

31/12/2007 12:25:00
Quote Anchor link
@Newbie: die controle wil je eerder uitgevoerd hebben. Je wilt namelijk de foutmelding nog kwijt in $_SESSION['errors'].

@Joren: Is dit de voorwaarde waaraan de code moet voldoen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(strlen($value) => 4)
?>

Het lijkt me dat je de code wilt vergelijken met een waarde uit een sessievariabele toch?
 
Joren vh

joren vh

31/12/2007 12:28:00
Quote Anchor link
Sorry php newbie

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 !
 
Joren vh

joren vh

31/12/2007 12:30:00
Quote Anchor link
Als ik het goed heb blanche geeft hij een error als de code langer is dan 4 cijfers
Maar als de code fout is moet hij dus ook een error geven !

edit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])


is van de captcha zelf
Gewijzigd op 01/01/1970 01:00:00 door joren vh
 
Joren de Wit

Joren de Wit

31/12/2007 12:31:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
    }
}

?>

ps. Zie mijn commentaar in de code...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Joren vh

joren vh

31/12/2007 12:35:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 elseif($key == 'norobot')
        {

            if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
            {

                //ga verder
            }
            if(strlen($value) => 4)
            {

                $_SESSION['errors'][$key] = tru;
                $errors[] = 'Je hebt een verkeerde code ingevuld';
            }
        }

?>


bij //ga verder , moet ik dan gewoon continue; doen ?
 
Joren de Wit

Joren de Wit

31/12/2007 12:38:00
Quote Anchor link
Ik zou het zo aanpakken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
 elseif($key == 'norobot')
        {

            if (md5($_POST['norobot']) != $_SESSION['randomnr2'])
            {

                $_SESSION['errors'][$key] = true;
                $errors[] = 'Je hebt een verkeerde code ingevuld';
            }
        }

?>

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
 
Joren vh

joren vh

31/12/2007 12:41:00
Quote Anchor link
Het werkt blanche

Hartelijk dank voor je hulp !
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.