Quantcast
Channel: PHP Freaks: PHP Help
Viewing all articles
Browse latest Browse all 13200

How do I verify the catpcha

$
0
0

Hi guys,

I have an email form on a website that sends the form data to an external php file (contact-form-handler.php) I have recently tried to add a captcha however I have been unsuccessful in getting the external php file to check if the captcha code was entered correctly.. At the moment it says that it is incorrect even when I enter the correct code. The website is www.bathroomdesignperth.com.au

 

The form code:

               <form method="POST" name="contact_form" action="/templates/onlinespark/contact-form-handler.php">
                    <label for='name'>Name: </label>
                    <input type="text" name="name" value='<?php echo htmlentities($name) ?>'>
                    <label for='email'>Email: </label>
                    <input type="text" name="email" value='<?php echo htmlentities($visitor_email) ?>'>
                    <label for='phone'>Phone: </label>
                    <input type="text" name="phone" value='<?php echo htmlentities($phone) ?>'>
                    <label for='message'>Message:</label>
                    <textarea name="message" rows=8 cols=30><?php echo htmlentities($user_message) ?></textarea>
                    <label><img src="/templates/onlinespark/captcha.php"></label>
                    <?php $salt = 'some-random-text'; ?>
                    <input type="text" name="code" />
                    <input type="hidden" name="code_key" value="<?php echo sha1('Text in the image' . $salt); ?>" />
                    <input type="submit" value="Submit" name='submit' class="quoteButton">
                </form> 

The external php file:

 <?php
        if (isset($_POST['submit'])) {
        $error = "";

        if (!empty($_POST['name'])) {
        $name = $_POST['name'];
        } else {
        $error .= "You didn't type in your name. <br />";
        }

if (!empty($_POST['phone'])) {
        $name = $_POST['phone'];
        } else {
        $error .= "You didn't enter your phone. <br />";
        }

        if (!empty($_POST['email'])) {
        $email = $_POST['email'];
         if (!preg_match("/^[a-z0-9]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $email)){
         $error .= "The e-mail address you entered is not valid. <br/>";
         }
        } else {
        $error .= "You didn't type in an e-mail address. <br />";
        }

        if (!empty($_POST['message'])) {
        $message = $_POST['message'];
        } else {
        $error .= "You didn't type in a message. <br />";
        }

$salt = 'some-random-text'; // same salt string as in the original file
if ($_POST['code_key'] == sha1($_POST['code'] . $salt)) {
// captcha is correct
} else {
$error .= "The captcha code you entered does not match. Please try again. <br />";
}

        if (empty($error)) {
        $from = 'From: ' . $name . ' <' . $email . '>';
        $to = "mail@mail.com.au";
        $subject = "New contact form message";
        $content = $name . " has sent you a message: \n" . $message;
        $success = "<h3>Thank you! Your message has been sent!</h3>";
        mail($to,$subject,$content,$from);
        }
        }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ERROR - Please fill in all fields!</title>
</head>
<body>
<!-- This page is displayed only if there is some error -->
<h1>ERROR - Please go back and fill in all fields!</h1>
<?php
            if (!empty($error)) {
            echo '<p class="error"><strong>Your message was NOT sent<br/> The following error(s) returned:</strong><br/>' . $error . '</p>';
            } elseif (!empty($success)) {
            echo $success;
            }
        ?>
</body>
</html>

Viewing all articles
Browse latest Browse all 13200

Trending Articles