reflex84 Posted November 8, 2011 Share Posted November 8, 2011 Hi, I recently downloaded a cool php (ajax) lightbox form but I want to add a captcha in the form and i'm struggling to get it working! I don't know too much about php and I would like to get this to work. You can see lightbox form here: www.testing123.co.za/index.html The error message "There was a problem sending your message. Please try again" comes up even when I put the correct captcha code in. Now I know it must be something to do with my php process form: <?php // Define some constants define( "RECIPIENT_NAME", "Joe Soap" ); define( "RECIPIENT_EMAIL", "JoeSoap@myemail.com" ); define( "EMAIL_SUBJECT", "Visitor Message" ); // Read the form values $success = false; $senderName = isset( $_POST['senderName'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName'] ) : ""; $senderEmail = isset( $_POST['senderEmail'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail'] ) : ""; $message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : ""; session_start(); include("verification_image.class.php"); $image = new verification_image(); if (($image->validate_code($_POST['validate']) ? "true" : "false") == "false") { header('Location: http://www.testing123.co.za/fail.htm'); exit; } // If all values exist, send the email if ( $senderName && $senderEmail && $message ) { $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">"; $headers = "From: " . $senderName . " <" . $senderEmail . ">"; $success = mail( $recipient, EMAIL_SUBJECT, $message, $headers ); } // Return an appropriate response to the browser if ( isset($_GET["ajax"]) ) { echo $success ? "success" : "error"; } else { ?> <html> <head> <title>Thanks!</title> </head> <body> <?php if ( $success ) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?> <?php if ( !$success ) echo "<p>There was a problem sending your message. Please try again.</p>" ?> <p>Click your browser's Back button to return to the page.</p> </body> </html> <?php } ?> Please if you could help I'd appreciate it!! Quote Link to comment https://forums.phpfreaks.com/topic/250697-php-form-please-help/ Share on other sites More sharing options...
gristoi Posted November 9, 2011 Share Posted November 9, 2011 I havent had a chance to look through your code lilne by line, but one thing that stands out as a possibility is your comparison operator: <?php ($image->validate_code($_POST['validate']) ? "true" : "false") == "false") try: <?php ($image->validate_code($_POST['validate']) ? true : false) === false) Quote Link to comment https://forums.phpfreaks.com/topic/250697-php-form-please-help/#findComment-1286561 Share on other sites More sharing options...
reflex84 Posted November 9, 2011 Author Share Posted November 9, 2011 Hi, Thanks for getting back to me... I tried to form with the changes you asked me to do and I still have the same problem. What I noticed too ... if the captcha is typed in wrong or right, then "sending message. Please wait" message comes up for a second and then the "There was a problem sending your message. Please try again". I also receive the form submission too.... For your information there is also javascript included in the index.html page: <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> <script type="text/javascript"> var messageDelay = 2000; // How long to display status messages (in milliseconds) // Init the form once the document is ready $( init ); // Initialize the form function init() { // Hide the form initially. // Make submitForm() the form's submit handler. // Position the form so it sits in the centre of the browser window. $('#contactForm').hide().submit( submitForm ).addClass( 'positioned' ); // When the "Send us an email" link is clicked: // 1. Fade the content out // 2. Display the form // 3. Move focus to the first field // 4. Prevent the link being followed $('a[href="#contactForm"]').click( function() { $('#content').fadeTo( 'slow', .2 ); $('#contactForm').fadeIn( 'slow', function() { $('#senderName').focus(); } ) return false; } ); // When the "Cancel" button is clicked, close the form $('#cancel').click( function() { $('#contactForm').fadeOut(); $('#content').fadeTo( 'slow', 1 ); } ); // When the "Escape" key is pressed, close the form $('#contactForm').keydown( function( event ) { if ( event.which == 27 ) { $('#contactForm').fadeOut(); $('#content').fadeTo( 'slow', 1 ); } } ); } // Submit the form via Ajax function submitForm() { var contactForm = $(this); // Are all the fields filled in? if ( !$('#senderName').val() || !$('#senderEmail').val() || !$('#message').val() || !$('#validate').val() ) { // No; display a warning message and return to the form $('#incompleteMessage').fadeIn().delay(messageDelay).fadeOut(); contactForm.fadeOut().delay(messageDelay).fadeIn(); } else { // Yes; submit the form to the PHP script via Ajax $('#sendingMessage').fadeIn(); contactForm.fadeOut(); $.ajax( { url: contactForm.attr( 'action' ) + "?ajax=true", type: contactForm.attr( 'method' ), data: contactForm.serialize(), success: submitFinished } ); } // Prevent the default form submission occurring return false; } // Handle the Ajax response function submitFinished( response ) { response = $.trim( response ); $('#sendingMessage').fadeOut(); if ( response == "success" ) { // Form submitted successfully: // 1. Display the success message // 2. Clear the form fields // 3. Fade the content back in $('#successMessage').fadeIn().delay(messageDelay).fadeOut(); $('#senderName').val( "" ); $('#senderEmail').val( "" ); $('#message').val( "" ); $('#validate').val( "" ); $('#content').delay(messageDelay+500).fadeTo( 'slow', 1 ); } else { // Form submission failed: Display the failure message, // then redisplay the form $('#failureMessage').fadeIn().delay(messageDelay).fadeOut(); $('#contactForm').delay(messageDelay+500).fadeIn(); } } </script> Quote Link to comment https://forums.phpfreaks.com/topic/250697-php-form-please-help/#findComment-1286599 Share on other sites More sharing options...
reflex84 Posted November 9, 2011 Author Share Posted November 9, 2011 Also, to let you know. To try adding the captcha (which is a captcha I usually use in other forms I have) I just added this code in the php form above: session_start(); include("verification_image.class.php"); $image = new verification_image(); if (($image->validate_code($_POST['validate']) ? "true" : "false") == "false") { header('Location: http://www.testing123.co.za/fail.htm'); exit; } I highly doubted it would have worked but this is why I am needing help on this forum. Quote Link to comment https://forums.phpfreaks.com/topic/250697-php-form-please-help/#findComment-1286601 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.