Results 1 to 1 of 1

Thread: Problem Adding a Math Captcha to a Contact Form

  1. #1
    Join Date
    Dec 2009
    Location
    NY NY USA
    Posts
    228
    Thanks
    158
    Thanked 1 Time in 1 Post

    Default Problem Adding a Math Captcha to a Contact Form

    Hi:

    I added a math captcha to a contact form and below is all the code that relates to it.

    The problem is that the mail gets sent even if the captcha answer is not right.

    Please tell me what's wrong?


    TEST PAGE


    Contact Form

    HTML

    Code:
    <div class="done">
    							<h3>Thank you for contacting us! Your message was sent.</h3>
    						</div>
    					</div>
    					<div class="form">
    					
    						<form class="validate-form" method="post" action="process-TEST.php">
    
    							<div class="span6">
    								<input type="text" name="name" class="text" placeholder="Name *" style="width:93.7%"/>
    							</div>
    							<div class="span6"><input type="text" name="email" class="text"  placeholder="Email *" style="width:93.7%"/></div>
    							<!--<div class="span4"><input type="text" name="website" class="text"  placeholder="Website (Not Required)" style="width:90%"/></div>-->
    							<div class="span12">
    							<textarea name="comment" class="text textarea" placeholder="Message *" style="width :97%; height:97px;"></textarea></div>
    	                        
    							<div class="span12 center">
                                <span style="color:#000">To stop spam-bots, please answer what is <span id="no1"></span> plus <span id="no2"></span>?</span>
                                <input style="width:12% !important;" type="text" class="text" name="answer" id="answer" pattern="7" title="Please Stop Spam Bots - Resolve The Answer" placeholder="Your Answer *" required>
                                </div>
    
                                <div><center><input type="submit" class="btn btn-info btn-large" value="SEND" id="submit"></center></div>
    							
    				        </form>
    												
    <span id="status" style="display:none">Unsubmitted</span>
    <script src="/js/jquery.js"></script>
    <script type="text/javascript" src="/js/captcha.js"></script>


    PROCESS.PHP

    Code:
    <?php
    //Retrieve form data. 
    //GET - user submitted data using AJAX
    //POST - in case user does not support javascript, we'll use POST instead
    $name = ($_GET['name']) ? $_GET['name'] : $_POST['name'];
    $email = ($_GET['email']) ?$_GET['email'] : $_POST['email'];
    $comment = ($_GET['comment']) ?$_GET['comment'] : $_POST['comment'];
    $answer = ($_GET['answer']) ?$_GET['answer'] : $_POST['answer'];
    //flag to indicate which method it uses. If POST set it to 1
    if ($_POST) $post=1;
    
    //Simple server side validation for POST data, of course, you should validate the email
    if (!$name) $errors[count($errors)] = 'Please enter your name.';
    if (!$email) $errors[count($errors)] = 'Please enter your email.'; 
    if (!$comment) $errors[count($errors)] = 'Please enter your message.'; 
    if (!$answer) $errors[count($errors)] = 'Please enter your answer.';
    
    //if the errors array is empty, send the mail

    CONTACT-FORM.JS

    Code:
    $(document).ready(function() {
    	
    	//if submit button is clicked
    	$('#submit').click(function () {		
    		
    		//Get the data from all the fields
    		var name = $('input[name=name]');
    		var email = $('input[name=email]');
    		var website = $('input[name=website]');
    		var answer = $('input[name=answer]');
    		var comment = $('textarea[name=comment]');
    
    		//Simple validation to make sure user entered something
    		//If error found, add hightlight class to the text field
    		if (name.val()=='') {
    			name.addClass('hightlight');
    			return false;
    		} else name.removeClass('hightlight');
    		
    		if (email.val()=='') {
    			email.addClass('hightlight');
    			return false;
    		} else email.removeClass('hightlight');
    		
    		if (comment.val()=='') {
    			comment.addClass('hightlight');
    			return false;
    		} else comment.removeClass('hightlight');
    		
    		if (answer.val()=='') {
    			answer.addClass('hightlight');
    			return false;
    		} else answer.removeClass('hightlight');
    		
    		//organize the data properly
    		var data = 'name=' + name.val() + '&email=' + email.val() + '&answer=' + answer.val() +'&comment='  + encodeURIComponent(comment.val());
    		
    		//disabled all the text fields
    		$('.text').attr('disabled','true');
    		
    		//show the loading sign
    		$('.loading').show();
    		
    		//start the ajax
    		$.ajax({
    			//this is the php file that processes the data and sends mail
    			url: "process-TEST.php",	
    			
    			//GET method is used
    			type: "GET",
    
    			//pass the data			
    			data: data,		
    			
    			//Do not cache the page
    			cache: false,
    			
    			//success
    			success: function (html) {				
    				//if process-TEST.php returned 1/true (send mail success)
    				if (html==1) {					
    					//hide the form
    					$('.form').fadeOut('slow');					
    					
    					//show the success message
    					$('.done').fadeIn('slow');
    					
    				//if process-TEST.php returned 0/false (send mail failed)
    				} else alert('Sorry, unexpected error. Please try again later.');				
    			}		
    		});
    		
    		//cancel the submit button default behaviours
    		return false;
    	});	
    });
    Last edited by KennyP; 03-19-2017 at 01:04 AM.

Similar Threads

  1. Replies: 13
    Last Post: 02-18-2011, 05:51 AM
  2. Replies: 2
    Last Post: 09-05-2010, 07:20 PM
  3. Contact Form Problem
    By thenajsays in forum JavaScript
    Replies: 1
    Last Post: 09-10-2009, 06:28 PM
  4. PHP contact form problem
    By renset in forum PHP
    Replies: 6
    Last Post: 05-24-2008, 05:52 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •