За последние 24 часа нас посетили 54185 программистов и 1725 роботов. Сейчас ищут 923 программиста ...

Добавление номера письма в formmail

Тема в разделе "PHP для новичков", создана пользователем BoB, 15 авг 2009.

  1. BoB

    BoB Активный пользователь

    С нами с:
    22 мар 2009
    Сообщения:
    19
    Симпатии:
    0
    Здравствуйте.

    Я делаю форму заказа товаров на сайте, и для этого я использую formmail скрипт. Я хотел бы чтобы в письме и в страничке об успешной отправки добавлялась строчка "Номер заказа" и число которое соответствовало бы номеру отправленного письма.
    Подскажите как это сделать?

    Спасибо.
     
  2. dots_rei

    dots_rei Активный пользователь

    С нами с:
    7 авг 2009
    Сообщения:
    193
    Симпатии:
    0
    приведите тут кусочки кода, которые отвечают за вывод информации об успешной отправке и за отправку письма
     
  3. BoB

    BoB Активный пользователь

    С нами с:
    22 мар 2009
    Сообщения:
    19
    Симпатии:
    0
    Код странички :

    PHP:
    1.         if (send_mail()) {
    2.             if (isset($form['redirect'])) {
    3.                 if (isset($form['redirect_values']))
    4.                     header('Location: ' . $form['redirect'] . '?' . getenv('QUERY_STRING') . "\r\n");
    5.                 else
    6.                     header('Location: ' . $form['redirect'] . "\r\n");
    7.             } else {
    8.                 if (!isset($form['title']))
    9.                     $form['title'] = 'PHPFormMail - Form Results';
    10.                 $output = "<h1>Ваш заказ был отправлен.</h1>\n";
    11.                 reset($form);
    12.                 while (list($key,$val) = each($form)) {
    13.                     if ((!$in_array_func($key,$invis_array)) && ((isset($form['print_blank_fields'])) || ($val))) {
    14.                         $output .= '<div class="field"><b>';
    15.                         if(($use_field_alias) && ($form['alias_method'] != 'email'))
    16.                             $output .= htmlspecialchars($fieldname_lookup[$key]);
    17.                         else
    18.                             $output .= htmlspecialchars($key);
    19.                         if ((isset($form['hidden'])) && ($in_array_func($key,$form['hidden'])))
    20.                             $output .= ":</b> <i>(hidden)</i></div>\n";
    21.                         else
    22.                             $output .= ':</b> ' . nl2br(htmlspecialchars(stripslashes($val))) . "</div>\n";
    23.                     }
    24.                 }
    25.                 if (isset($form['return_link_url']) && isset($form['return_link_title']))
    26.                     $output .= '<div class="returnlink"><a href="' . $form["return_link_url"] . '">'. $form["return_link_title"] . "</a></div>\n";
    27.                 output_html($output);
    28.             }
    29.         }
    Код отправки почты

    PHP:
    1. function send_mail()
    2. {
    3.     global $form, $invis_array, $valid_env, $in_array_func, $fieldname_lookup, $errors;
    4.    
    5.     if (!isset($form['subject']))
    6.             $form['subject'] = 'WWW Form Submission';
    7.     if (!isset($form['email']))
    8.             $form['email'] = [email='parts@slik.biz]'parts@slik.biz[/email]';
    9.    
    10.     switch ($form['mail_newline']) {
    11.         case 2:     $mail_newline = "\r";
    12.                 break;
    13.         case 3:     $mail_newline = "\r\n";
    14.                 break;
    15.         default:    $mail_newline = "\n";
    16.     }
    17.    
    18.     if (isset($form['gmt_offset']) && ereg('^(\\-|\\+)?([0-9]{1}|(1{1}[0-2]{1}))$', $form['gmt_offset'])) {
    19.         $mkseconds = mktime(gmdate('H') + $form['gmt_offset']);
    20.         $mail_date = gmdate('F jS, Y', $mkseconds) . ' at ' . gmdate('h:iA', $mkseconds) . ' (GMT ' . $form['gmt_offset'] . ').';
    21.     } else
    22.         $mail_date = date('F jS, Y') . ' at ' . date('h:iA (T).');
    23.    
    24.     if (isset($form['realname']))
    25.         $realname = $form['realname'];
    26.     elseif (isset($form['firstname']) || isset($form['lastname']))
    27.         $realname = trim($form['firstname'] . ' ' . $form['lastname']);
    28.  
    29.     $mailbody = 'Below is the result of your feedback form.  It was submitted by' . $mail_newline;
    30.     if (isset($realname))
    31.         $mailbody.= $realname . ' (' . $form['email'] . ') on ' . $mail_date . $mail_newline . $mail_newline;
    32.     else
    33.         $mailbody.= $form['email'] . ' on ' . $mail_date . $mail_newline . $mail_newline;
    34.  
    35.     reset($form);
    36.    
    37.     while (list($key,$val) = each($form)) {
    38.         if ((!$in_array_func($key,$invis_array)) && ((isset($form['print_blank_fields'])) || ($val))) {
    39.                 if(($form['alias_method'] == 'email') || ($form['alias_method'] == 'both'))
    40.                     $mailbody .= $fieldname_lookup[$key];
    41.                 else
    42.                     $mailbody .= $key;
    43.                 $mailbody .= ': ' . $val . $mail_newline;
    44.         }
    45.     }
    46.  
    47.     if (isset($form['env_report'])) {
    48.         $temp_env_report = explode(',', $form['env_report']);
    49.         $mailbody .= $mail_newline . $mail_newline . '-------- Env Report --------' . $mail_newline;
    50.         while (list(,$val) = each($temp_env_report)) {
    51.             if ($in_array_func($val,$valid_env))
    52.                     $mailbody .= $val . ': ' . getenv($val) . $mail_newline;
    53.         }
    54.     }
    55.  
    56.     if (!isset($form['recipient']))
    57.         $form['recipient'] = '';
    58.  
    59.     // Append lines to $mail_header that you wish to be
    60.     // added to the headers of the e-mail. (SMTP Format
    61.     // with newline char ending each line)
    62.  
    63.     $mail_header = 'From: ' . $form['email'];
    64.     if (isset($realname))
    65.         $mail_header .= ' (' . $realname . ')';
    66.     $mail_header .= $mail_newline;
    67.     if (isset($form['recipient_cc']))
    68.         $mail_header .= 'Cc: ' . $form['recipient_cc'] . $mail_newline;
    69.     if (isset($form['recipient_bcc']))
    70.         $mail_header .= 'Bcc: ' . $form['recipient_bcc'] . $mail_newline;
    71.     if (isset($form['priority']))
    72.         $mail_header .= 'X-Priority: ' . $form['priority'] . $mail_newline;
    73.     else
    74.         $mail_header .= 'X-Priority: 3' . $mail_newline;
    75.     $mail_header .= 'Content-Type: text/plain; charset=utf-8' . $mail_newline;
    76.     $mail_header .= 'X-Mailer: PHPFormMail ' . VERSION . ' ([url=http://www.boaddrink.com]http://www.boaddrink.com[/url])' . $mail_newline;
    77.  
    78.     $mail_status = mail($form['recipient'], $form['subject'], $mailbody, $mail_header);
    79.     if (!$mail_status) {
    80.          $errors[] = '1|Message could not be sent due to an error while trying to send the mail.';
    81.      error_log('[PHPFormMail] Mail could not be sent due to an error while trying to send the mail.');
    82.     }
    83.     return $mail_status;
    84. }
    85.  
     
  4. BoB

    BoB Активный пользователь

    С нами с:
    22 мар 2009
    Сообщения:
    19
    Симпатии:
    0
    Кто-нибудь может помочь?
     
  5. dots_rei

    dots_rei Активный пользователь

    С нами с:
    7 авг 2009
    Сообщения:
    193
    Симпатии:
    0
    не нашла у вас в коде переменную, отвечающую за номер письма (вероятно, плохо искала, но разбирать подробно код времени нет). допустим это переменная $numlet
    добавьте в строку:
    PHP:
    1. $output = "<h1>Ваш заказ был отправлен.</h1>Номер заказа".$numlet."\n";
    и в переменную
    PHP:
    1. $mailbody = 'Below is the result of your feedback form.  It was submitted by' . $mail_newline . 'Номер заказа: ' . $numlet;
     
  6. BoB

    BoB Активный пользователь

    С нами с:
    22 мар 2009
    Сообщения:
    19
    Симпатии:
    0
    Да я даже почти уверен что этой переменной нету =)
    Мне как раз нужно ее написать
     
  7. BoB

    BoB Активный пользователь

    С нами с:
    22 мар 2009
    Сообщения:
    19
    Симпатии:
    0
    Ввожу

    PHP:
    1. $mailbody = 'Below is the result of your feedback form.  It was submitted by' . $mail_newline . 'Номер заказа: ' . $n;
    На почту приходит только "Номер заказа:"

    Ввожу

    PHP:
    1. $output = "<h1>Ваш заказ был отправлен.</h1>Номер заказа".$n."\n";;
    Отображается номер

    В чем проблема?