Na foutieve captcha code verzend hij toch de mail

Status
Niet open voor verdere reacties.

Flinth

Gebruiker
Lid geworden
28 jul 2011
Berichten
8
Hallo,

Ik heb een hele tijd een formulier lopen op mijn site. Dit werkte perfect totdat ik er een captcha script tussen zette.
Ik werk in Dreamweaver MX
Wanneer iets niet is ingevuld geeft hij dat aan, wanneer ik een goede code invoer verzend hij de mail inclusief alle ingevulde velden. Wanneer ik een foute code invoer geeft hij wel een melding dat ik de code fout heb ingevoerd maar hij verzend toch de mail.

Ik denk dat het in de "aanvraag.php" zit maar ik zie het niet.. Ik heb write.php met een include in aanvraag.php gezet. Sindsdien doet hij vreemd.

Het aanvraag script:


<?php

include ('write.php');

/* Subject and Email Variables */

$emailSubject = 'Aanvraag proef PDF';
$webMaster = 'mark.liebregts@gmail.com';

/* Gathering Data Variables */

$kaartField = $_POST['kaart'];
$naamField = $_POST['naam'];
$adresField = $_POST['adres'];
$postcodeField = $_POST['postcode'];
$woonplaatsField = $_POST['woonplaats'];
$telnoField = $_POST['telno'];
$emailField = $_POST['email'];
$uitgerekendField = $_POST['uitgerekend'];
$naamkidsField = $_POST['naamkids'];
$geslachtField = $_POST['geslacht'];
$trouwdatumField = $_POST['trouwdatum'];
$tekstField = $_POST['tekst'];
$gevondenField = $_POST['gevonden'];

$body = <<<EOD

<br><hr><br>
Aangevraagd kaartje: $kaartField <br>
Naam: $naamField <br>
Adres: $adresField <br>
Postcode: $postcodeField <br>
Woonplaats: $woonplaatsField <br>
Telefoonnummer: $telnoField <br>
Email: $emailField <br>
Uitrekendatum: $uitgerekendField <br>
Naam kind: $naamkidsField <br>
Geslacht: $geslachtField <br>
Datum trouwen/adoptie/geboorte: $trouwdatumField <br>
Tekst: $tekstField <br>
Naam gevonden: $gevondenField <br>
EOD;

$headers = "From: $emailField\r\n";
$headers .= "Content-type: text/html\r\n";
$success = mail ($webMaster, $emailSubject, $body, $headers);

Het write script:

<?php
session_start();
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{ // plaats hier php code voor geslaagde captcha
echo "U hebt een goede code ingevoerd. hartelijk bedankt voor uw aanvraag.<br />U ontvangt uw proefdruk binnen 48 uur in uw mailbox.
";
}
else
{ // plaats hier php code voor gefaalde captcha
echo "U hebt een foutieve code ingevoerd, probeer het opnieuw.";
}
?>

De captcha code, wellicht overbodig:

<?php
// het random nr. aanmaken en gecodeerd opslaan in php sessie

session_start();
$randomnr = rand(1000, 9999);
$_SESSION['randomnr2'] = md5($randomnr);
// captcha plaatje met nummer maken - afmetingen kun je aanpassen gebruikte font
$im = imagecreatetruecolor(100, 38);
// Kleurenbepaling
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
// zwarte rechthoek tekenen - afmetingen kun je aanpassen aan verschillende fonts
imagefilledrectangle($im, 0, 0, 200, 35, $black);
// hier - font.ttf' vervangen met de locatie van je eigen font bestand
$font = 'Aladdin Regular.ttf';
// schaduw toevoegen
imagettftext($im, 30, 0, 22, 24, $grey, $font, $randomnr);
// randomnr. toevoegen
imagettftext($im, 30, 0, 15, 26, $white, $font, $randomnr);
// voorkomen dat afbeelding ge-cached wordt
header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
// plaatje verzenden naar browser
header ("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
?>

Ik hoop dat er iemand is die weet hoe ik dit kan oplossen. Ik kom er niet uit en ik ben er al even mee bezig..

Alvast bedankt.
 
Het ligt aan:
$success = mail ($webMaster, $emailSubject, $body, $headers);

Bovenstaande voer je altijd uit, ongeacht als het fout is gegaan. Dus het zal die regel moet je verwijderen en plaatsen in het write.php. Zoiets als:

PHP:
<?php
session_start();
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
{ // plaats hier php code voor geslaagde captcha
$success = mail ($webMaster, $emailSubject, $body, $headers);
echo "U hebt een goede code ingevoerd. hartelijk bedankt voor uw aanvraag.<br />U ontvangt uw proefdruk binnen 48 uur in uw mailbox.
";
}
else
{ // plaats hier php code voor gefaalde captcha
$success = false;
echo "U hebt een foutieve code ingevoerd, probeer het opnieuw.";
}
?>
 
Laatst bewerkt:
Helaas

Ik heb de code omgezet van aanvraag naar write, ook de 2 regels die er boven stonden.
Bij beide kreeg ik geen mail binnen, niet wanneer ik een foute code invulde maar ook niet wanneer ik een goede code invulde.

Dit was dus niet de oplossing volgens mij..
 
Zag ik over het hoofd, waarschijnlijk was er zonet een foutmelding? Regel:
include ('write.php');

moet onderaan worden geplaatst ipv bovenaan

EDIT: Vergeet niet session_start() uit je write.php te halen en in je hoofdfile te zetten
 
Laatst bewerkt:
Jaaaa

Heel hartelijk dank BadHunter, nu doet hij het wel..

Kei bedankt ervoor...:thumb::thumb::thumb:
 
Ik heb nog een vraag over bovenstaande code...

Nu wil ik graag in plaats van de tekst een pagina invoegen. Ik zag ergens een code echo"(bedankt.php)"; maar als ik die invoeg komt er geen pagina te voorschijn, alleen een lege pagina..
Hoe kan ik de pagina erin krijgen? Als de captcha code fout is hoeft er geen pagina te komen maar alleen de tekst zoals die er nu staat.

Alvast bedankt voor de reactie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan