Здравствуйте. Я на сайте сделал форму отправки заказа по почте с помощью formmail. Дописал функцию которая бы отправляла номер письма на почту и отображалась при успешной отправки письма на страничке. PHP: $f = fopen('number.txt', 'r'); $n = fgets($f); fclose($f); $fw = fopen('number.txt', 'w+'); $n++; fputs ($fw, $n); fclose($fw); Добавляю строчку чтобы оно отображалось на страничке PHP: if (send_mail()) { if (isset($form['redirect'])) { if (isset($form['redirect_values'])) header('Location: ' . $form['redirect'] . '?' . getenv('QUERY_STRING') . "\r\n"); else header('Location: ' . $form['redirect'] . "\r\n"); } else { if (!isset($form['title'])) $form['title'] = 'PHPFormMail - Form Results'; $output = "<h1>Ваш заказ был отправлен.</h1><b>Номер заказа : </b>".$n."\n"; reset($form); while (list($key,$val) = each($form)) { if ((!$in_array_func($key,$invis_array)) && ((isset($form['print_blank_fields'])) || ($val))) { $output .= '<div class="field"><b>'; if(($use_field_alias) && ($form['alias_method'] != 'email')) $output .= htmlspecialchars($fieldname_lookup[$key]); else $output .= htmlspecialchars($key); if ((isset($form['hidden'])) && ($in_array_func($key,$form['hidden']))) $output .= ":</b> <i>(hidden)</i></div>\n"; else $output .= ':</b> ' . nl2br(htmlspecialchars(stripslashes($val))) . "</div>\n"; } } if (isset($form['return_link_url']) && isset($form['return_link_title'])) $output .= '<div class="returnlink"><a href="' . $form["return_link_url"] . '">'. $form["return_link_title"] . "</a></div>\n"; output_html($output); } } Все замечательно отображается. Добавляю строчку чтобы оно отправлялось в письме, приходит только "Below is the result of your feedback form. It was submitted by Номер заказа :" Без самого номера PHP: $mailbody = 'Below is the result of your feedback form. It was submitted by' . $mail_newline . 'Номер заказа : '. $n; if (isset($realname)) $mailbody.= $realname . ' (' . $form['email'] . ') on ' . $mail_date . $mail_newline . $mail_newline ; else $mailbody.= $form['email'] . ' on ' . $mail_date . $mail_newline . $mail_newline ; reset($form); Подскажите как сделать чтобы номер приходил на почту? Спасибо.
Боюсь, этих кусков недостаточно. Вроде ясно, что $n у тебя при отправке не имеет правильного значения, но почему это происходит - ч.з. Как эти куски сопряжены между собой, и что между ними находится? Попытайся отследить изменения $n. Кстати, зачем ты в первом фрагменте открываешь в моде w+ ? Вполне достаточно w. Излишества вредны.. А лучше открыть один раз r+, прочитать, потом rewind($f), потом ftruncate($f,0), записать новое n, закрыть файл. Дважды открывать не вижу смысла.
Сначала идет кусок кода об отправке письма, а затем уже о вывода странички с информацией. Тоесть значение $n тут не причем, оно по идее не изменяется между этими кусками. А про начало...учусь =)
$n не может быть ни при чем. Сделай $n=12345; непосредственно перед первой строкой последнего фрагмента. Если это значение не придет - я тебе поверю.
Интересный факт =) Вставил этот код PHP: $f = fopen('number.txt', 'r'); $n = fgets($f); fclose($f); $fw = fopen('number.txt', 'w'); $n++; fputs ($fw, $n); fclose($fw); Сразу перед кодом отправки на почту(раньше он был в самом начале скрипта), и теперь на страничке отправки не видно номера, но в письме его видно =)
Добавил функцию PHP: $f = fopen('number.txt', 'r'); $n = fgets($f); fclose($f); Перед выводом сообщения и он выводит например номер 3048, а на почту приходит 3049
Где-то кто-то увеличивает n. Если тебе это не нужно - ищи, где и кто)). Где стоит твой код увеличения $n? Не после этого чтения?
Код стоит сразу перед кодом отправки. Если я не добавляю эти 3 строчки, то число нормально увеличивается на 1, но не отображается в страничке об отправки. Эти строчки ведь не могут увеличивать:/ они только читают переменную:/
Ура получилось =)) Я добавил эту строчку в начало кода PHP: $f = fopen('number.txt', 'r'); $n = fgets($f); fclose($f); $fw = fopen('number.txt', 'w'); $n++; fputs ($fw, $n); fclose($fw); и добавил эту PHP: $f = fopen('number.txt', 'r'); $n = fgets($f); fclose($f); Перед кодом об отправке, и число теперь и там и там нормальное =) Спасибо =)