Implementere captcha i mailscript
Hej.Jeg har et mailscript, som jeg gerne vil beskytte med en captchafunktion.
Jeg har fået sat selve captcha-billedet ind i min form:
<form method="post" action="sendt.php">
<fieldset>
<legend>Fill out all fields</legend>
<label for="t1">Name:</label>
<input id="t1" type="text" name="name" /><br />
<label for="t2">E-mail:</label>
<input id="t2" type="text" name="email" /><br />
<label for="t3">Subject:</label>
<input id="t3" type="text" name="subject" /><br />
<label for="t4">Message:</label>
<textarea id="t4" name="message" rows="10" cols="49"></textarea><br />
<label for="t5">Enter security code:</label>
<img src="captcha/CaptchaSecurityImages.php?width=100&height=40&characters=5" alt="captcha" />
<input id="security_code" name="security_code" type="text" />
<br />
<label for="t6"> </label><input id="t6" type="submit" name="submit" value=" Send e-mail " /><br />
<input type="reset" value=" Clear " />
</fieldset>
</form>
- men jeg kan ikke finde ud af at indsætte sikkerhedskode-checket:
<?php
session_start();
if(($_SESSION['security_code'] == $_POST['security_code']) && (!empty($_SESSION['security_code'])) ) {
// Insert you code for processing the form here, e.g emailing the submission, entering it into a database.
} else {
// Insert your code for showing an error message here
}
?>
- i selve mailscriptet (sendt.php):
<?php
include_once("sql.php");
$ip = $_SERVER["REMOTE_ADDR"];
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) && // there must be a name
!empty($_POST['email']) && // there must be an e-mail address
!empty($_POST['subject']) && // there must be a subject
!empty($_POST['message']) && // there must be a message
// more security checks
!strpos($_POST['name'], "@") &&
!eregi("\r",$_POST['name']) &&
!eregi("\n",$_POST['name']) &&
!eregi("\r",$_POST['email']) &&
!eregi("\n",$_POST['email']))
// everything ok, let's send e-mails...
{
$headers = "From: ".$_POST['name']."<".$_POST['email'].">\n";
$headers .= "Reply-To: ".$_POST['name']."<".$_POST['email'].">\n";
$headers .= "X-Sender-IP: ".$ip."\n";
$headers .= "MIME-Version: 1.0\n";
$headers .="Content-Type: text/plain; charset=iso-8859-1 \n";
$sql = "SELECT Email1 FROM ab_records";
$result = mysql_query($sql);
$i = 1;
while($row = mysql_fetch_array($result)) {
if (@mail($row[0], strip_tags($_POST['subject']),
stripslashes(strip_tags($_POST['message'])), $headers))
{
// echo "True";
}
else
{
echo "E-mail no. ".$i." was not sent. An error ocurred.";
}
$i++;
}
echo "<p>E-mail sent. Thanks.</p>";
}
else
{
echo "<p>The e-mail could not be sent. Fill out alle the fields and try again.</p>";
}
}
mysql_close();
?>
Jeg er løbet sur i if/else-sætningerne. Er der én, der kan hjælpe med at sætte sikkerhedskode-checket ind i mailscriptet?
På forhånd mange tak for hjælpen.
