2014-03-21 2 views
0

Я новичок в PHP, и мне сложно с трудом понять, как печатать данные по электронной почте.Контактная форма (PHP и Ajax): как печатать данные по электронной почте?

мне нужны все данные, отправленные на мой адрес электронной почты, что-то вроде этого:

Имя: показывает мне имя, написанное в поле

Электронная почта: показывает мне электронную почту написано в поле

Telefone: показывает мне телефонный номер, написанный на поле

Mensag em: показывает мне сообщение, написанное в поле

В настоящее время он отправляет мне только имя и сообщение и без «метки» Nome и Mensagem, которые мне нужны.

Как я могу это достичь?

Форма: http://baskra.com/teste/teste.html

PHP:

<?php 

header('Content-Type: text/html; charset=UTF-8'); 

if($_POST) 
{ 
    //check if its an ajax request, exit if not 
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { 
     die(); 
    } 

    $to_Email  = "[email protected]"; //Replace with recipient email address 
    $subject  = 'Formulário de Contato (Site)'; //Subject line for emails 

    //check $_POST vars are set, exit if any missing 
    if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userPhone"]) || !isset($_POST["userMessage"])) 
    { 
     die(); 
    } 

    //Sanitize input data using PHP filter_var(). 
    $user_Name  = filter_var($_POST["userName"], FILTER_SANITIZE_STRING); 
    $user_Email  = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL); 
    $user_Phone  = filter_var($_POST["userPhone"], FILTER_SANITIZE_STRING); 
    $user_Message  = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING); 

    //additional php validation 
    if(strlen($user_Name)<6) // If length is less than 6 it will throw an HTTP error. 
    { 
     header('HTTP/1.1 500 Nome muito curto ou campo vazio.'); 
     exit(); 
    } 
    if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation 
    { 
     header('HTTP/1.1 500 Insira um e-mail válido.'); 
     exit(); 
    } 
    if(!is_numeric($user_Phone)) //check entered data is numbers 
    { 
     header('HTTP/1.1 500 Esse campo só aceita números.'); 
     exit(); 
    } 
    if(strlen($user_Message)<10) //check emtpy message 
    { 
     header('HTTP/1.1 500 Mensagem curta demais.'); 
     exit(); 
    } 

    //proceed with PHP email. 
    $headers = 'From: '.$user_Email.'' . "rn" . 
    'Reply-To: '.$user_Email.'' . "rn" . 
    'X-Mailer: PHP/' . phpversion(); 


    @$sentMail = mail($to_Email, $subject, $user_Message .' -'.$user_Name, $headers); 

    if(!$sentMail) 
    { 
     header('HTTP/1.1 500 Não foi possível enviar. Tente novamente.'); 
     exit(); 
    }else{ 
     echo 'Olá, '.$user_Name.'. Agradecemos o contato! '; 
     echo 'Retornaremos o mais breve possível.'; 
    } 
} 
?> 
+2

Sidenote: Изменить все вашей ' "гп"' в ' "\ г \ п"' –

+0

Ваш 'заголовок()' вызовы , вы используете недопустимые статусы HTTP. Текст не предназначен для настройки (т. Е. «Insira um e-mail válido.»), Но вместо этого вы должны использовать соответствующий соответствующий код для кода. В случае 500 это «Внутренняя ошибка сервера». –

+0

Спасибо за подсказку, Мартин. Я фактически настраиваю форму, которую я нашел, и там были пользовательские сообщения, я только что перевел их на португальский. Кстати, какова правильная форма кодирования этого файла PHP в UTF-8? –

ответ

0
$message = 'Nome: '.$user_Name."\r\n". 
      'E-mail: '.$user_Email."\r\n". 
      'Telefone: '.$user_Phone."\r\n". 
      'Mensagem: '.$user_Message; 
$sentMail = mail($to_Email, $subject, $message, $headers); 
+2

Пожалуйста, не используйте оператор подавления ошибок ('@'). –

+0

Спасибо, Миллер, он отлично работал. –

+0

Я только что скопировал ее код. Я не рекомендую использовать его, но это функция 'mail', и конечный пользователь не должен видеть детали отказавшего сообщения электронной почты. Я бы рекомендовал не выводить ошибки и не записывать их. –

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