Captcha in email formulier toevoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sen I

Sen I

20/01/2010 23:31:00
Quote Anchor link
Beste mensen,
Ik wil captcha invoegen in me emailformulier. Contact pagina is me gelukt maar als je op verzenden klikt, krijg ik error. wat ik ook heb geprobeerd, het is me niet gelukt,

een beetje hulp stel ik zeer op prijs.
alvast bedankt

Dit heb ik op contact.php

<h1>Contact ons</h1><br />
<form method="post" action="contact_email.php">
<table>
<tr>
<td>Naam</td>
<td>:</td>
<td><input type="text" value="" name="naam">
</td>
</tr>
<tr>
<td>Telefoon</td><td>:</td>
<td>
<input type="text" value="" name="telefoon">
</td>
</tr>
<tr>
<td>E-mail</td><td>:</td>
<td>
<input type="text" value="" name="email">
</td>
</tr>
<tr>
<td>Onderwerp</td><td>:</td>
<td>
<input type="text" value="" name="onderwerp">
</td>
</tr><tr>
<td>Opmerkingen&nbsp;</td><td>:</td>
<td>
<textarea name="opmerkingen" Rows="5" Cols="49"></textarea>
</td>
</tr>
<tr>
<td>Word verification</td><td>:</td>
<td>
<div><img src="../../images/captcha/index.php?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo session_name()?>
=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo session_id()?>
" style="vertical-align:middle" /> <input type="text" name="keystring"></p>
</td>
</tr>
<tr>
<td>&nbsp;</td><td>&nbsp;</td>
<td><INPUT TYPE="checkbox" NAME="usermail" value="usermail"><small>E-mail een kopie van dit bericht naar uw eigen e-mailadres.</small>
</td>
</tr>
<tr>
<td>&nbsp;</td><td>&nbsp;</td>
<td><input type="submit" value=" Verzenden " name="submit">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="reset" value=" Opnieuw "></td>
</tr>
</table>
</form>
<br />
<table>
<tr> <td>&nbsp;
</td></tr></table>
<div>&nbsp;</div>


</div>
<div class="clear"></div>
</div>


En dit heb ik op contact_email.php

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
72
73
74
<?php
// Data Form
$Onderwerp = $_POST['onderwerp'];
$Van = $_POST['email'];
$Ip .= $_SERVER['REMOTE_ADDR'];
$referer = $_SERVER['HTTP_REFERER'];
$logfile = date("d-m-Y, H:i:s", time());
if (isset($_POST["naam"])) $naam = $_POST["naam"];
if (isset($_POST["telefoon"])) $telefoon = $_POST["telefoon"];
if (isset($_POST["email"])) $email = $_POST["email"];
if (isset($_POST["onderwerp"])) $onderwerp = $_POST["onderwerp"];
if (isset($_POST["opmerkingen"])) $opmerkingen = $_POST["opmerkingen"];

$errors = array();
if (empty($naam)) $errors[] = "Naam";
if (empty($telefoon)) $errors[] = "Telefoon";
if(!preg_match ("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$/i", $_POST['email'])){    $errors[] = 'Correct e-mail'; }
if (empty($onderwerp)) $errors[] = "Onderwerp";
if (empty($opmerkingen)) $errors[] = "Opmerkingen";
if (empty($keystring)) $errors[] = "Word verification";

if ((count($errors)) != 0){
    echo "<h1>Er is fout opgetreden, controleer de gegevens hieronder:</h1><br><font color='red'>";
    for ($i=0; $i<count($errors); $i++){
        echo $errors[$i]." invullen s.v.p.<br>";
    }

    echo "</font><br />";
    echo "<a href='javascript:javascript:history.go(-1)'><font color='Blue'>Terug</font></a>";
    }
else {
    
if(isset($_POST['usermail'])) mail("$Van", "$Onderwerp", "Contact ons

Naam: $naam
Telefoon: $telefoon
E-mail: $email
Onderwerp: $onderwerp
Opmerkingen: $opmerkingen"
, "From: $Van");
          
    require "../libs/db.php";
    $sql = "INSERT INTO emailcontact VALUES (NULL, '$naam', '$telefoon', '$email', '$onderwerp', '$opmerkingen', '$logfile', '$Ip', '$referer')";
    $res = mysql_query($sql);
//    $res = 1;
    if ($res){
        
        require "../libs/config.php";
        $ord = mysql_query("SELECT id FROM contactemail ORDER BY id DESC LIMIT 1");
        $row = mysql_fetch_row($ord);
        
    
        
     if (!empty($email)){
            $receiver = $email;
        }


                $aan = "[email protected]";
        $onderwerp = "$onderwerp";
        $reservering = "
        <h3>Contact ons </h3>
<table>
    <tr><td>Naam</td><td>:</td><td>$naam</td></tr>
    <tr><td>Telefoon</td><td>:</td><td>$telefoon</td></tr>
    <tr><td>E-Mail</td><td>:</td><td>$email</td></tr>
    <tr><td>Onderwerp</td><td>:</td><td>$onderwerp</td></tr>
    <tr><td>Opmerkingen</td><td>:</td><td>$opmerkingen</td></tr>
</table>"
;

        $headers = "From: ".$naam." <".$email.">\r\n";    
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
        $headers .= "Reply-To: ".$naam." <".$email.">\r\n";
        mail($aan, $onderwerp, $reservering, $headers);


?>


<h1>Contact ons </h1><br />
<strong>De volgende informatie is verzonden. We zullen zo spoedig mogelijk uw e-mail beantwoorden!</strong>
<br /><br />
<table>
<tr><td>Naam</td><td>:</td><td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $naam?>
</td></tr>
<tr><td>Telefoon</td><td>:</td><td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $telefoon?>
</td></tr>
<tr><td>E-mail</td><td>:</td><td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $email?>
</td></tr>
<tr><td>Onderwerp</td><td>:</td><td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $onderwerp?>
</td></tr>
<tr><td>Opmerkingen</td><td>:</td><td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $opmerkingen?>
</td></tr>
</table>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
mysql_close($link);
}
else {
    echo "<h2>Er is fout opgetreden, probeer opnieuw</h2>";
}
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Sen I
 
PHP hulp

PHP hulp

29/11/2024 23:50:28
 
Jelmer -

Jelmer -

20/01/2010 23:33:00
Quote Anchor link
Wel om te beginnen: Wat is de foutmelding?

En om vervolgens dan je verder te helpen: Wat is de relevante code? (Meestal 10 regels boven de regel met de error tot 10 regel eronder, om te beginnen)
 
Davy Jansen

Davy Jansen

20/01/2010 23:33:00
Quote Anchor link
Wat heb je al (qua code)? Dan kunnen we je misschien verder helpen.

Zonder code kunnen we niks :)

edit: plaats je code even tussen code tags. Dan is het leesbaar.
Gewijzigd op 01/01/1970 01:00:00 door Davy Jansen
 
Sen I

Sen I

20/01/2010 23:37:00
Quote Anchor link
Deze code heb ik gedownload maar weet niet waar ik het moet plaatsen?



if (isset($_POST['submit'])) {
if (isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']) {
// Grab the form vars
$email = (isset($_POST['email'])) ? $_POST['email'] : '' ;
$message = (isset($_POST['message'])) ? $_POST['message'] : '' ;
$name = (isset($_POST['name'])) ? $_POST['name'] : '' ;

// Check for email injection
if (has_emailheaders($email)) {
die("Possible email injection occuring");
}

mail("[email protected]","Email Subject ",
"Name: $name\n
Email: $email\n\n
$message",
"From: $email");
$message = 'Your feedback has been received.';
} else {
$message = 'The word verification was not correct. Please press back and resubmit.';
}
} else {
$message = 'Please use the contact form for communication';
}

function has_emailheaders($text) {
return preg_match("/(%0A|%0D|\n+|\r+)(content-type:|to:|cc:|bcc:)/i", $text);
}
 
PHP Newbie

PHP Newbie

21/01/2010 00:31:00
Quote Anchor link
Ik heb een code gedownload, maar het doet niet wat ik wil en nu mogen jullie dat oplossen voor me.

Download iets wat wel doet wat je wilt.. http://www.phphulp.nl/php/scripts/1/1210/
 
Niek s

niek s

21/01/2010 01:01:00
Quote Anchor link
Je kan het veel beter als volgt aanpakken:
Je pakt een array van 3 elementen. Ieder element zet je een code "VGJ56CVD" of iets dergelijks. Ieder element heeft dus een andere code.
Dan pak je GIMP (of iets dergelijks, paint kan ook) en maak je van die codes plaatjes.
Die plaatjes sla je dan op als 0, 1 en 2 .jpg

Je maakt dan in je html-formulier een hidden field, en die noem je iets van captcha_id. Tevens maak je een invul vakje wat je captcha_antwoord noemt.
Dan doe je rand(0, 2)
Dat willekeurige getal zet je in het hidden field captcha_id, en je pakt het bijbehorende plaatje, die laat je zien in het formulier. Dus $getal.jpg laat je zien.

Als dan de persoon het formulier heeft ingevuld, en de POST request doet, controleer je of captcha_antwoord overeenkomt met het element in je array met het nummer wat in de hidden field staat.

Voorbeeld uitwerking:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$captcha
= array();
$captcha[] = 'bhjbfghsjd';
$captcha[] = 'dvbdhsbfd';
$captcha[] = 'wewereee';
if($_POST['captcha_antwoord'] == $captcha[$_POST['captcha_id'])) {
// goed
} else {
// fout! bot!
}
?>

Dit doe je natuurlijk zonder fatsoenlijke fout afhandeling.

... Of is dit alleen bij phphulp.nl zo ?


PS: Heb je ook al een PM systeem wat (nog steeds) SQL-Injection gevoelig is?


</einde sarcasme>
 



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.