Jump to content

php form mail and captcha issue


CarlyBryan

Recommended Posts

HI recently we have been starting to recieved about 30 spam emails aday. I read that the issue was how my forms were submitting and that it kept bypassing the javascript.  I found some code i could use at http://chrisplaneta.com/freebies/php_contact_form_script_with_recaptcha/ but i cannot seem to get the form to function correctly.

 

It is supposed to email me once the form is validated but the email does not seem to be sending.

 

Also i would like the form to redirect to a thank you page once it has been agreed. I did try but it kept telling me the headers had already been called.  i am calling the page in with php include.  Can you please advise the best way for me to relocate.

 

I have attached a copy of my form.php page  which has every thing on. I have also included the code at the bottom of this email

 

Also i would appreciate any comments on what i can include on my form to limit the spammers

<?php
	

		//If the form is submitted:
		if(isset($_POST['submitted'])) {

		//load recaptcha file
		require_once('captcha/recaptchalib.php');

		//enter your recaptcha private key
		$privatekey = "6Ld5Df4SAAAAAKciqwDco8dfvBR15fGeFVXWcvCO";
			
			//check recaptcha fields
			$resp = recaptcha_check_answer ($privatekey,
										$_SERVER["REMOTE_ADDR"],
										$_POST["recaptcha_challenge_field"],
										$_POST["recaptcha_response_field"]);


			//Check to see if the invisible field has been filled in
			if(trim($_POST['checking']) !== '') {
				$blindError = true;
			} else {
				
				//Check to make sure that a contact name has been entered	
				$authorName = (filter_var($_POST['formAuthor'], FILTER_SANITIZE_STRING));
				if ($authorName == ""){
					$authorError = true;
					$hasError = true;
				}else{
					$formAuthor = $authorName;
				};
				
				
				//Check to make sure sure that a valid email address is submitted
				$authorEmail = (filter_var($_POST['formEmail'], FILTER_SANITIZE_EMAIL));
				if (!(filter_var($authorEmail, FILTER_VALIDATE_EMAIL))){
					$emailError = true;
					$hasError = true;
				} else{
					$formEmail = $authorEmail;
				};
					
				//Check to make sure the subject of the message has been entered
				$msgSubject = (filter_var($_POST['formSubject'], FILTER_SANITIZE_STRING));
				if ($msgSubject == ""){
					$subjectError = true;
					$hasError = true;
				}else{
					$formSubject = $msgSubject;
				};
				
				//Check to make sure content has been entered
				$msgContent = (filter_var($_POST['formContent'], FILTER_SANITIZE_STRING));
				if ($msgContent == ""){
					$commentError = true;
					$hasError = true;
				}else{
					$formContent = $msgContent;
				};
				
				// if all the fields have been entered correctly and there are no recaptcha errors build an email message
				if (($resp->is_valid) && (!isset($hasError))) {
					$emailTo = '[email protected]'; // here you must enter the email address you want the email sent to
					$subject = 'A new message from: immigration solicitors Manchester' ;
					$body = "Name :formAuthor \n\nEmail: $formEmail \n\nTelephone :formSubject \n\nContent: $formContent  \n\n$formAuthor"; // This is the body of the email
						$headers = 'From: <'.$formEmail.'>' . "\r\n" . 'Reply-To: ' . $formEmail . "\r\n" . 'Return-Path: ' . $formEmail; // Email headers // Email headers
					
					//send email
					mail($emailTo, $subject, $body, $headers);
					
					// set a variable that confirms that an email has been sent
					$emailSent = true;
				}
				
				// if there are errors in captcha fields set an error variable
				if (!($resp->is_valid)){
					$captchaErrorMsg = true;
				}
			}
		} ?>
						
		<?php // if the page the variable "email sent" is set to true show confirmation instead of the form ?>
		<?php if(isset($emailSent) && $emailSent == true) { ?>
			
            
<?php 
$message = "Thank you. Your form has been submitted and a member of our team will contact you shortly.This website is developed for generating immigration enquiries in your area and it is not a law firm, your enquiries will be passed on to a solicitor.We confirm that this website does not belong to a law firm and we have no physical office in your county. Our solicitors are able to provide immigration services all over the UK because they provide a Virtual Service.Responses to your legal enquiries and the legal opinion given to you would be provided by a qualified UK Immigration Solicitor. If you decide to proceed with the solicitor, your matter will be dealt with under a Law firm regulated by the Solicitors Regulatory Authority.";

echo "<script type='text/javascript'>alert('$message');</script>";

/*echo "<script language='javascript'>
window.location('http://www.immigrationsolicitorsmanchesteruk.co.uk/thankyou.php')
</script>";*/

?>
<p>Thank you. Your form has been submitted and a member of our team will contact you shortly.This website is developed for generating immigration enquiries in your area and it is not a law firm, your enquiries will be passed on to a solicitor.We confirm that this website does not belong to a law firm and we have no physical office in your county. </p>

		<?php } else { ?>
		<?php // if there are errors in the form show a message ?>
			<?php if(isset($hasError) || isset($blindError)) { ?>
				<p><strong>Im sorry. There was an error submitting the form. Please check all the marked fields and try again.</strong></p>
			<?php } ?>
			<?php // if there are recaptcha errors show a message ?>
			<?php if ($captchaErrorMsg){ ?>	
				<p><strong>The recaptcha was not entered correctly. Please try again.</strong></p>
			<?php } ?>
			<?php 
			// here, you set what the recaptcha module should look like
			// possible options: red, white, blackglass and clean
			// more infor on customisation can be found here: http://code.google.com/intl/pl-PL/apis/recaptcha/docs/customization.html
			?>
			<script type="text/javascript">
				var RecaptchaOptions = {
					theme : 'blackglass'
				};
			</script>
			<?php
			// this is where the form starts
			// action attribute should contain url of the page with this form
			// more on that you can read here: http://www.w3schools.com/TAGS/att_form_action.asp
			?>
			<form id="contactForm" action="" method="post">
				
					<p>	
						
			  <strong>Full Name</strong><br/>	<input class="requiredField <?php if($authorError) { echo 'formError'; } ?>" type="text" name="formAuthor" id="formAuthor" value="<?php if(isset($_POST['formAuthor']))  echo $_POST['formAuthor'];?>"size="25" /></p>
					<p>
					<strong>Email </strong><br/>
						<input class="requiredField <?php if($emailError) { echo 'formError'; } ?>" type="text" name="formEmail" id="formEmail" value="<?php if(isset($_POST['formEmail']))  echo $_POST['formEmail'];?>" size="25" />
					</p>
                    
                    <p>
							<strong>Telephone </strong><br/>	
						<input class="requiredField <?php if($subjectError) { echo 'formError'; } ?>" type="text" name="formSubject" id="formSubject" value="<?php if(isset($_POST['formSubject']))  echo $_POST['formSubject'];?>" size="25" />
					</p>
                    <p>
					
						<strong>Please give us some information about your enquiry</strong><br/>
			  <textarea class="requiredField <?php if($commentError) { echo 'formError'; } ?>" id="formContent" name="formContent" cols="25" rows="5"><?php if(isset($_POST['formContent'])) { if(function_exists('stripslashes')) { echo stripslashes($_POST['formContent']); } else { echo $_POST['formContent']; } } ?></textarea></p>
					<?php 
					// this field is visible only to robots and screenreaders
					// if it is filled in it means that a human hasn't submitted this form thus it will be rejected
					?>
					<div id="screenReader">
						<label for="checking">
							If you want to submit this form, do not enter anything in this field
						</label>
						<input type="text" name="checking" id="checking" value="<?php if(isset($_POST['checking']))  echo $_POST['checking'];?>" />
					</div>
				</div>
				<?php
					// load recaptcha file
					require_once('captcha/recaptchalib.php');
					// enter your public key
					$publickey = "6Ld5Df4SAAAAANFKozja9bUlDziJ92c31DDt1j6k";
					// display recaptcha test fields
					echo recaptcha_get_html($publickey);
				?>
				<input type="hidden" name="submitted" id="submitted" value="true" />
				<?php // submit button ?>
				<input type="submit" value="Send Message" tabindex="5" id="submit" name="submit">
			</form>
		<?php } // yay! that's all folks! ?>

form issue.txt

Link to comment
https://forums.phpfreaks.com/topic/292710-php-form-mail-and-captcha-issue/
Share on other sites

Place this the top of your script to see if any errors.

error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', '1');

Try to echo items out or create a new errors array to see what's going on each step.

Troubleshooting email issues is hard, can try phpmailer

 

I use the api from http://www.stopforumspam.com/ which greatly reduces signups and email spammers.

 

To block ip's

$remote_ip = $_SERVER['REMOTE_ADDR'];
if (strstr($remote_ip, ', ')) {
    $ips = explode(', ', $remote_ip);
    $remote_ip = $ips[0];
}
$spam_ip = "http://api.stopforumspam.org/api?ip=".$remote_ip;
$spamdata = @simplexml_load_file($spam_ip);
if ($spamdata) {
  
    $spamarray = array();
  
    $spamarray = json_decode(json_encode($spamdata), TRUE);

   if($spamarray['appears'] == "yes" ){
   die('spammer');
   }
}

To block emails

$spam_ip = "http://api.stopforumspam.org/api?email=".$email; //use your email value
$spamdata = @simplexml_load_file($spam_ip);
if ($spamdata) {
 
    $spamarray = array();
 
    $spamarray = json_decode(json_encode($spamdata), TRUE);
   if($spamarray['appears'] == "yes" ){
   die('spammer');
   }
}

There can be no output displayed to the broiwser before using a header redirect.

You could try a meta refresh.

echo "<meta http-equiv='refresh' content='0;http://www.immigrationsolicitorsmanchesteruk.co.uk/thankyou.php' />";
exit();

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.