2013-02-13 5 views
2

У меня есть форма, расположенный в https://pnrbuilder.com/_popups/feedback_popup.htmlсодержимое текстовой области не размещения

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

Вводные поля работают нормально, но содержимое textarea не попадает на электронную почту.

Любая идея, что я делаю неправильно?

РНР Страница:

<?php 
/* 
This first bit sets the email address that you want the form to be submitted to. 
You will need to change this value to a valid email address that you can access. 
*/ 
$webmaster_email = "[email protected]"; 

/* 
This bit sets the URLs of the supporting pages. 
If you change the names of any of the pages, you will need to change the values here. 
*/ 
$feedback_page = "feedback_form.html"; 
$error_page = "error_message.html"; 
$thankyou_page = "thank_you.html"; 


/* 
This next bit loads the form field data into variables. 
If you add a form field, you will need to add it here. 
*/ 
$EmailAddress = $_POST['EmailAddress'] ; 
$IssueType = $_POST['IssueType'] ; 
$Comments = $_POST['Comments'] ; 

/* 
The following function checks for email injection. 
Specifically, it checks for carriage returns - typically used by spammers to inject a CC list. 
*/ 
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; 
    } 
} 


// If email injection is detected, redirect to the error page. 
if (isInjected($EmailAddress)) { 
header("Location: $error_page"); 
} 

// If we passed the previous test, send the email then redirect to the thank you page. 
else { 
mail("$webmaster_email, test[email protected]", "Feedback", 
    $EmailAddress, $IssueType, $Comments); 
header("Location: $thankyou_page"); 
} 
?> 

Если я ставлю ниже в верхней части моей страницы PHP это ДЕЙСТВИТЕЛЬНО эхо из содержимого текстового поля

echo $_POST["EmailAddress"]; 
echo $_POST["IssueType"]; 
echo $_POST["Comments"]; 
+0

Не могли бы вы попробовать выводя '$ _POST' переменных * до * отправка их по электронной почте? Разве они не появляются? –

+0

изменить выше: Да, область текста отображается до отправки по электронной почте – DelightedD0D

+0

Пожалуйста, проверьте мой ответ ниже. Это должно сделать трюк для вас. ;-) –

ответ

1

Отправка электронной почты

можно передать неправильные параметры mail():

mail("$webmaster_email, [email protected]", "Feedback", $EmailAddress, $IssueType, $Comments); 

Это должно быть:

$contents = <<<EOM 
Email: $emailAddress 

Issue type: $IssueType 

Comments: 
$Comments 
EOM; 

mail("$webmaster_email, [email protected]", "Feedback", $contents); 

проверки электронной почты

Во-вторых, вы должны использовать надлежащую проверку электронной почты:

$emailAddress = filter_input(INPUT_POST, 'EmailAddress', FILTER_VALIDATE_EMAIL); 
if ($emailAddress === false) { 
    header("Location: $error_page"); 
} 
+0

Идеальная почтовая часть отлично работает сейчас, спасибо ОЧЕНЬ много BTW, я пытался использовать проверку электронной почты, но я получаю ниже, когда загружается php-страница: 'Warning: filter_input() ожидает, что параметр 1 длинный, строка указана в /home/content/08/10125908/html/_popups/send_mail.php в строке 51' – DelightedD0D

+0

Я изменил 'emailAddress' в вашем сообщении на' EmailAddress', но все равно получаю ту же ошибку – DelightedD0D

+1

@ DelightedD0D Извините, я пропустил добавление 'INPUT_POST 'как первый аргумент :) –

2

Пожалуйста, проверьте правильную форму из mail функции РНР:

bool mail (string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]]) 

Артикул:http://php.net/manual/en/function.mail.php


Сообщение должно быть третьим параметром, Нету?

То, что вы написали это:

mail("$webmaster_email, [email protected]", "Feedback", 
    $EmailAddress, $IssueType, $Comments); 

Rewrite это следующим образом:

$messageBody = "Comments : ".$Comments." Issue : ".$IssueType; 
mail("$webmaster_email, [email protected]", "Feedback", $messageBody); 

Просто хотел, чтобы увидеть, если что-то не так с $_POST, но я предполагаю, что мой приведенный выше код исправит проблему (просто добавьте все свои данные в файл $messageBody и передайте его функции mail).

+0

Благодарим вас за помощь в этом DID. В конечном счете, я пойду с ответом Джека, поскольку он форматирует электронную почту более читаемым образом. – DelightedD0D

+0

@ DelightedD0D Рад помочь, приятель! ;-) (Sidenote: Я просто завернул быстрый способ показать, как это должно быть сделано ...) –

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