Флажки формы PHP - PullRequest
       27

Флажки формы PHP

0 голосов
/ 27 марта 2009

Как получить значения флажков php в форме, отображаемой при отправке получателю по электронной почте? Я учусь использовать php, но не могу понять это с помощью сгенерированной формы.

Ниже приведен код флажка из самой формы:

<input type="checkbox" value="Please send me a Travel Planner" name="options[]">
<input type="checkbox" value="Please send me a Visitor Map" name="options[]" />
<input type="checkbox" value="Please sign me up for the email newsletter" name="options[]" />

Теперь вот код формы со страницы обратной связи, которая его обрабатывает:

#<?php
// ------------- CONFIGURABLE SECTION ------------------------

// $mailto - set to the email address you want the form
// sent to, eg
//$mailto       = "youremailaddress@example.com" ;

$mailto = 'xxxxx@xxxxxxxxx.com' ;

// $subject - set to the Subject line of the email, eg
//$subject  = "Feedback Form" ;

$subject = "Request For Visitor Guide" ;

// the pages to be displayed, eg
//$formurl      = "http://www.example.com/feedback.html" ;
//$errorurl     = "http://www.example.com/error.html" ;
//$thankyouurl  = "http://www.example.com/thankyou.html" ;

$formurl = "http://www.example.com/requestform_mtg.php" ;
$errorurl = "http://www.example.com/error.php" ;
$thankyouurl = "http://www.example.com/thankyou.php" ;

$email_is_required = 1;
$name_is_required = 1;
$address_is_required = 1;
$contactname_is_required = 1;
$city_is_required = 1;
$zip_is_required = 1;
$phone_is_required = 1;
$uself = 0;
$use_envsender = 0;
$use_webmaster_email_for_from = 1;
$use_utf8 = 1;

// -------------------- END OF CONFIGURABLE SECTION ---------------

$headersep = (!isset( $uself ) || ($uself == 0)) ? "\r\n" : "\n" ;
$content_type = (!isset( $use_utf8 ) || ($use_utf8 == 0)) ? 'Content-Type: text/plain; charset="iso-8859-1"' : 'Content-Type: text/plain; charset="utf-8"' ;
if (!isset( $use_envsender )) { $use_envsender = 0 ; }
$envsender = "-f$mailto" ;
$name = $_POST['name'] ;
$contactname = $_POST['contactname'] ;
$title = $_POST['title'] ;
$email = $_POST['email'] ;
$address = $_POST['address'] ;
$city = $_POST['city'] ;
$state = $_POST['state'] ;
$zip = $_POST['zip'] ;
$fax = $_POST['fax'] ;
$phone = $_POST['phone'] ;
$mtgname = $_POST['mtgname'] ;
$dates = $_POST['dates'] ;
$attendance = $_POST['attendance'] ;
$guestroom = $_POST['guestroom'] ;
$mtgroom = $_POST['mtgroom'] ;
$timeframe = $_POST['timeframe'] ;
$options = $_POST['options'] ;
$comments = $_POST['comments'] ;
$http_referrer = getenv( "HTTP_REFERER" );

if (!isset($_POST['email'])) {
    header( "Location: $formurl" );
    exit ;
}
if (($email_is_required && (empty($email) || !ereg("@", $email))) || ($name_is_required && empty($name)) || ($address_is_required && empty($address)) || ($contactname_is_required && empty($contactname)) || ($city_is_required && empty($city)) || ($zip_is_required && empty($zip)) || ($phone_is_required && empty($phone))) {
    header( "Location: $errorurl" );
    exit ;
}
if ( ereg( "[\r\n]", $name ) || ereg( "[\r\n]", $email ) || ereg( "[\r\n]", $address ) || ereg( "[\r\n]", $contactname ) ) {
    header( "Location: $errorurl" );
    exit ;
}
if (empty($email)) {
    $email = $mailto ;
}
$fromemail = (!isset( $use_webmaster_email_for_from ) || ($use_webmaster_email_for_from == 0)) ? $email : $mailto ;

if (get_magic_quotes_gpc()) {
    $comments = stripslashes( $comments );
}

$messageproper =
    "This message was sent from:\n" .
    "$http_referrer\n" .
    "------------------------------------------------------------\n" .
    "Organization Name: $name\n" .
    "Contact Name: $contactname\n" .   
    "Email of sender: $email\n" .
    "Address of sender: $address\n" .
    "City of sender: $city\n" .
    "State of sender: $state\n" .
    "Zip Code of sender: $zip\n" . 
    "Fax of sender: $fax\n" .   
    "Phone of sender: $phone\n" .
    "Meeting Name: $mtgname\n" .           
    "Preferred Dates: $dates\n" .          
    "Expected Attendance: $attendance\n" .         
    "Guest Rooms: $guestroom\n" .
    "Largest Meeting Room Needed: $mtgroom\n" .            
    "Decision Timeframe: $timeframe\n" .   
    "Options: $options\n" .                            
    "------------------------- COMMENTS -------------------------\n\n" .
    $comments .
    "\n\n------------------------------------------------------------\n" ;
$headers =
   "From: \"$name\" <$fromemail>" . $headersep . "Reply-To: \"$name\" <$email>" . $headersep . "X-Mailer: chfeedback.php 2.13.0" .
    $headersep . 'MIME-Version: 1.0' . $headersep . $content_type ;

if ($use_envsender) {
    mail($mailto, $subject, $messageproper, $headers, $envsender );
}
else {
    mail($mailto, $subject, $messageproper, $headers );
}
header( "Location: $thankyouurl" );
exit ;

?>

Все, что я получаю по электронной почте для флажков, это "массив".

Спасибо

Обновление:

Только что заметил, что я получаю эти ошибки, если я НЕ выбираю флажок и отправляю:

Предупреждение: implode () [function.implode]: неверные аргументы переданы в /home/content/o/l/t/oltvcb/html/feedback_mtg.php в строке 148

Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /home/content/o/l/t/oltvcb/html/feedback_mtg.php:148) в / home / content / o / l / t /oltvcb/html/feedback_mtg.php в строке 162

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

Ответы [ 5 ]

2 голосов
/ 27 марта 2009

Вот предложение. Вместо этого:

"Options: $options\n" .  

Попробуйте это:

"Options:".implode("\n",$options)."\n".

Всегда существует вероятность того, что не будет никакого массива параметров $ (флажки не установлены). В этом случае вы можете сделать что-то вроде:

"Options:".(isset($options) ? implode("\n",$options) : "")."\n".
2 голосов
/ 27 марта 2009

$ options - это массив. Попробуйте взрыва это.

$options = implode(', ', $options);
2 голосов
/ 27 марта 2009

Флажки обрабатываются как массив при отправке.

foreach($options as $option) {
  print $option."\n";
}

или

print implode("\n", $options);
1 голос
/ 27 марта 2009
$options = join(', ', $_POST['options']);
0 голосов
/ 27 марта 2009

Во-первых, вам нужно избавиться от вашего "[]" в имени вашей переменной для флажков HTML.

Если вы называете его "options", когда он передается на страницу обработки, он представляется как массив.

С этого момента у вас теперь есть массив выбранных значений.

$ _ POST [ 'опции']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...