2013-03-22 7 views
-1

Я пытаюсь получить эту форму для отправки на мой адрес электронной почты.PHP почтовая форма не работает, если я не использую CAPTCHA

Вот PHP, который я использую (он предназначен для формы, расположенной на http://protoolstutorial.org/cottageinn/). Мне нужно знать, почему это не происходит и отправляется на мой адрес электронной почты. Что мне не хватает в коде?

<?php 

$your_email ='[email protected]';// <<=== update to your email address 

session_start(); 

$errors = ''; 
$south = ''; 
$east = ''; 
$west = ''; 
$midwest = ''; 
$visitor_email = ''; 

if(isset($_POST['submit'])) 
{ 
    $south = $_POST['south']; 
    $east = $_POST['east']; 
    $west = $_POST['west']; 
    $midwest = $_POST['midwest']; 
    $visitor_email = $_POST['email']; 

    ///------------Do Validations------------- 

    if(empty($visitor_email)) 
    { 
     $errors .= "\n Email is required fields. "; 
    } 

    if(IsInjected($visitor_email)) 
    { 
     $errors .= "\n Bad email value!"; 
    } 

    if(empty($errors)) 
    { 
     //send the email 
     $to = $your_email; 
     $subject="New form submission"; 
     $from = $your_email; 
     $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; 
     $body = "A user submitted the contact form:\n". 
       "South: $south\n". 
       "East: $east\n". 
       "West: $west\n". 
       "Midwest: $midwest\n". 
       "Email: $visitor_email \n". 
       "IP: $ip\n";  
     $headers = "From: $from \r\n"; 
     $headers .= "Reply-To: $visitor_email \r\n"; 

     mail($to, $subject, $body,$headers); 
     header('Location: thank-you.html'); 
    } 
} 

// Function to validate against any email injection attempts 
function IsInjected($str) 
{ 
    $injections = array('(\n+)', 
         '(\r+)', 
         '(\t+)', 
         '(%0A+)', 
         '(%0D+)', 
         '(%08+)', 
         '(%09+)' 
         ); 
    $inject = join('|', $injections); 
    $inject = "/$inject/i"; 
    if(preg_match($inject,$str)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
?> 
+0

Вы пытаетесь отправить с локального хоста? Как xampp? –

+0

Чтобы помочь себе, напишите «var_dump ($ errors)»; до "if (empty ($ errors))" :) – MyMomSaysIamSpecial

+0

jsut добавление var_dump не исправляет его – Philip

ответ

0
  1. Добавить error_reporting(E_ALL) в начале вашего PHP, чтобы получить ошибки.
  2. Объявляйте функции перед их использованием.
  3. Для умной, безопасной и легкой отправки почты, попробуйте http://code.google.com/a/apache-extras.org/p/phpmailer/
+0

действительно? что не помогает вообще? Это ссылка на кучу загрузок ... – Philip

+0

Получает ли php ошибки после добавления error_reporting (E_ALL) в начале файла? – ex3v

+0

не он – Philip

Смежные вопросы