Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl, PHP: отправка формы на e-mail

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Открыть новую тему     Написать ответ в эту тему

CL

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я просто плохо понимаю в PHP  кодах ,а хотелось бы  
отправить данную форму на e-mail. Конкретно с данными полями.

Всего записей: 2 | Зарегистр. 09-04-2007 | Отправлено: 03:15 11-04-2007
SCUPER

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди помогите я дубовый в етом деле
подскажите как и что в каких расширениях (длл, хтмл
надо все для формы с таким вот содержанием
 
наименование     меню  
количество         текст
цвет                  меню
 
 
 
ну идалее я сам думаю разберусь
заранее благодарен

Всего записей: 13 | Зарегистр. 10-02-2007 | Отправлено: 05:57 15-04-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SCUPER

Цитата:
подскажите как и что в каких расширениях (длл, хтмл
надо все для формы с таким вот содержанием  

читаем топик с самого начала.. все приведено. и dll тут совсем не при чем.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:58 15-04-2007
galym74



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Извини что задавал вопросы не по тему. Просто у меня в опере все темы, касающися отправки сообщении на почту, были открыты и когда отправлял сообщения не заметил тему. На сайте был установлен почтовый скрипт PHPSendMail v2.1.2. После смены хостинга скрипт перестал работать. Оказывается на новом хостинге не разрешено функция imap_binary который использует этот скрипт. Я в этом деле новичок. Не знаю особенности пхп. Но мне нужно поскарее запустит эту форму. Выкладываю файлы и ссылку на форму.
index.php

Код:
<?php
#  В данном файле ничего менять не нужно, однако если у вас есть трудности с возвратом на указанную
#  в настройках страницу, то отредактируйте строку 100 как указано в коментарии.
error_reporting(0);
require("./config.inc");
require("./header.inc");
# Функции
  function formtohtml ($str) {
    if (get_magic_quotes_gpc()) {
    $str = stripslashes($str);
    }
  $str = trim($str);
  $str = htmlspecialchars ($str, ENT_QUOTES);
  $str = str_replace("|", "/", $str);
  $str = str_replace("\r", "", $str);
  $str = str_replace("\n", "<br>", $str);
  $str = eregi_replace("(<br>*){2,}","<br><br>",$str);
  $str = eregi_replace("[ ]{2,}", " ", $str);
  return $str;
  }
  function htmltoform ($str) {
  $str = str_replace("&amp;", "&", $str);
  $str = str_replace("&quot;", "\"", $str);
  $str = str_replace("&#039;", "'", $str);
  $str = str_replace("&lt;", "<", $str);
  $str = str_replace("&gt;", ">", $str);
  $str = str_replace("<br>", "\r\n", $str);
  return $str;
  }
# Отправка
  if (!empty($_GET['a']) and $_GET['a'] == "m") {
  $var['fields'] = array("name"=>"имя", "email"=>"e-mail", "subject"=>"заголовок", "message"=>"текст сообщения");
  $notice['error'] = array();
    foreach ($var['fields'] as $key => $value) {
    if (empty($_POST[$key]) || (($_POST[$key] = formtohtml($_POST[$key])) == "0")) $notice['error'][] = $value;
    }
    if (empty($notice['error'])) {
      if (preg_match("/^([a-z,0-9,_,\-,\.])+\@([a-z,0-9,_,\-])+(\.([a-z,0-9])+)+$/",$_POST['email'])) {
      $t['c'] = file($config['recip_f']);
      $t['n'] = sizeof($t['c']);
        for ($i=0;$i<$t['n'];$i++) {
        $t['c'][$i] = explode("|",trim($t['c'][$i]));
        }
        if (!empty($_POST['recip']) and !empty($t['c'][$_POST['recip']-1])) {
        $var['recip_n'] = $t['c'][$_POST['recip']-1][1];
        $var['recip_e'] = $t['c'][$_POST['recip']-1][0];
          if (function_exists("imap_binary")) {
            function mail_convert($str) {
            $str = trim(imap_binary(addcslashes($str, "\"!@\\!@(!@)")));
            return $str;
            }
          $var['subj'] = "=?Windows-1251?B?".trim(imap_binary(htmltoform($_POST['subject'])))."?=";
          $var['header']  = "From: =?Windows-1251?B?".mail_convert(htmltoform($_POST['name']))."?= <".$_POST['email'].">\r\n";
          $var['header'] .= "MIME-Version: 1.0\r\n";
          $var['header'] .= "Content-Transfer-Encoding: 8bit\r\n";
          $var['header'] .= "Content-Type: text/plain; charset=\"Windows-1251\"\r\n";
          $var['header'] .= "X-Mailer: PHP v.".phpversion();
          $var['message']  = htmltoform($_POST['message']);
          if (!empty($config['features'])) $var['message'] .= "\r\n\r\n---------------------------------------\r\nIP адрес отправителя: ".$_SERVER['REMOTE_ADDR'];
          # Пытаемся послать сообщение
            if (mail("=?Windows-1251?B?".mail_convert(htmltoform($var['recip_n']))."?= <".$var['recip_e'].">",$var['subj'],$var['message'],$var['header'])) {
            $notice['ok'] = "Сообщение успешно отправлено";
            }
            else {
            $notice['error'] = "Системная ошибка - сбой функции &quot;mail&quot;";
            }
          }
          else {
          $notice['error'] = "Ошибка программы - недоступна функция &quot;imap_binary&quot;";
          }
        }
        else {
        $notice['error'] = "Ошибка настоек программы - неверный получатель";
        }
      }
      else {
      $notice['error'] = "Пожалуйста, проверьте правильность e-mail";
      }
    }
    else {
    $notice['error'] = "Пожалуйста, введите ".implode(", ",$notice['error']);
    }
  }
echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\">\r\n";
  if (empty($notice['ok'])) {
  echo "<form name=\"SM\" method=\"POST\" action=\"".$_SERVER['PHP_SELF']."?a=m\">\r\n";
  }
  else {
  // ПРИ ВОЗНИКНОВЕНИИ ОШИБКИ "METHOD POST NOT ALLOWED" ИЗМЕНИТЬ "POST" на "GET"
  echo "<form name=\"GT\" method=\"POST\" action=\"".$config['url_path']."\">\r\n";
  }
# Сообщение о завершении / ошибке
  if (!empty($notice)) {
  echo "<tr><td align=\"center\">";
    if (!empty($notice['ok'])) {
    echo "<p><b><font color=\"#008000\">".$notice['ok']."!</font></b></p>";
    }
    elseif (!empty($notice['error'])) {
    echo "<p><b><font color=\"#800000\">".$notice['error']."!</font></b></p>";
    }
  echo "</td></tr>\r\n";
  }
# Вывод формы
  if (empty($notice['ok'])) {
  echo "<tr><td align=\"center\">";
  require("./form.inc");
  echo "</td></tr>\r\n";
  }
echo "<tr><td align=\"center\"><table border=\"0\" cellpadding=\"5\" cellspacing=\"0\"><tr><td>";
# Кнопки
  if (empty($notice['ok'])) {
  echo "<input type=\"submit\" value=\"Отправить\"></td>\r\n";
  echo "<td><input type=\"reset\" value=\"Сбросить\">\r\n";
  }
  else {
  echo "<input type=\"submit\" value=\"".$config['url_name']."\">\r\n";
  }
echo "</td></tr></table></td></tr>\r\n";
  if (!empty($config['copyshow'])) {
  echo "<tr><td align=\"center\"><font style=\"font-size: 10px;\"><a style=\"text-decoration: none\" href=\"http://www.jpcars.com/scripts/phpsendmail.zip\">PHPSendMail</a> v.2.1.2 © 2000-".date("Y")." <a style=\"text-decoration: none\" href=\"http://www.jpcars.com\" target=\"_blank\">JPCars.com</a></font></td></tr>\r\n";
  }
echo "</form></table>\r\n";
# Футер
require("./footer.inc");
?>
 

 config.inc

Код:
<?php
#  Пожалуйста, прочитайте файл readme.txt перед тем как что-либо здесь редактировать!
 
#  URL и название ссылки, кнопка на которую будет появляться вместе с сообщением об успешной
#  отправке. Допускается использование любых ссылок, например, "/", "./folder/", "/folder/index.htm".
$config['url_name'] = "Вернуться на главную";
$config['url_path'] = "/";
 
#  Путь к файлу, содержащий список получателей, а также номер получателя по умолчанию.
$config['recip_f'] = "./recip.txt";
$config['recip_n'] = 1;
 
#  По умолчанию в письме приходят данные об IP адресе с которого пришло сообщение.
#  Если это лишнее, то смените значение на "0".
$config['features'] = 1;
 
#  Пути к заголовкам. Обычно подходят те, что прилагаются к скрипту - при желании вы можете
#  вручную отредактировать header.inc, изменив там название страницы посредством редактирования
#  тега <title>, а также изменить содержимое заголовка "description".
#  Также вы можете создать свои заголовки, чтобы вставить скрипт в дизайн вашего сайта.
#  Заголовки состоят из обычного HTML-файла, разделенного пополам тегами <body>, т.е.
#  файл header.inc должен заканчиваться тегом <body>, а footer.inc начинаться </body>.
#  Важно, чтобы в header.inc был заголовок "content-type" с кодировкой windows-1251.
$config['header'] = "./header.inc";
$config['footer'] = "./footer.inc";
 
#  Показ копирайта. Если вы очень сильно не хотите, чтобы показывался маленький
#  заголовочек со ссылкой на скрипт, тогда измените значение на "0". Очень прошу
#  не делать этого .
$config['copyshow'] = 1;
?>
 

 
footer.inc

Код:
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="50">
<tr><td></td></tr></table></center></body></html>

 
form.inc

Код:
<table border="1" cellpadding="6" cellspacing="0" bordercolor="#999999" bgcolor="#F5F5F5">
  <tr>
    <td>
      <table border="0" cellpadding="3" cellspacing="0">
        <tr>
          <td align="right">
            <p class="T">Ваше имя:</td>
          <td nowrap><input style="width: 160px" class="F2" maxlength="35" name="name" <?php if (!empty($_POST['name'])) echo " value=\"".$_POST['name']."\""; ?>size="14"></td>
        </tr>
        <tr>
          <td align="right">
            <p class="T">E-Mail:</td>
          <td><input style="width: 160px" class="F2" maxlength="35" name="email" <?php if (!empty($_POST['email'])) echo " value=\"".$_POST['email']."\""; ?>size="14"></td>
        </tr>
        <tr>
          <td align="right">
            <p class="T">Заголовок:</td>
          <td><input style="width: 200px" class="F2" maxlength="45" name="subject" <?php if (!empty($_POST['subject'])) echo " value=\"".$_POST['subject']."\""; ?>size="14"><a style="color: #F5F5F5; text-decoration: none" target="_blank" href="http://www.jpcars.com">.</a><a style="color: #F5F5F5; text-decoration: none" target="_blank" href="http://www.jpcars.ru">.</a></td>
        </tr>
<?php
$t['c'] = file($config['recip_f']);
$t['n'] = sizeof($t['c']);
  if ($t['n'] > 1) {
  echo "        <tr>\r\n";
  echo "          <td align=\"right\">\r\n";
  echo "            <p class=\"T\">Получатель:</td>\r\n";
  echo "          <td><select style=\"width: 200px\" class=\"F2\" size=\"1\" name=\"recip\">\r\n";
  if (!empty($_POST['recip'])) $config['recip_n'] = intval($_POST['recip']);
  $config['recip_n']--;
    for ($i=0;$i<$t['n'];$i++) {
    $t['c'][$i] = explode("|",trim($t['c'][$i]));
    echo "          <option "; if ($i == $config['recip_n']) echo "selected "; echo "value=\"".($i+1)."\">".$t['c'][$i][1]."</option>\r\n";
    }
  echo "          </select></td>\r\n";
  echo "        </tr>\r\n";
  }
  else {
  echo "        <input type=\"hidden\" value=\"1\" name=\"recip\">\r\n";
  }
?>
        <tr>
          <td align="right" valign="top">
            <p class="T">Сообщение:</td>
          <td><textarea class="F3" name="message" rows="6" cols="45"><?php if (!empty($_POST['message'])) echo htmltoform($_POST['message']); ?></textarea></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
 

 
header.inc
 

Код:
<html>
<head>
<meta http-equiv="content-language" content="ru">
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<meta name="author" content="Sergey Krivosheyev">
<meta name="robots" content="all">
<meta name="description" content="Бесплатный почтовый скрипт от сайта JPCars.com.">
<title>Бесплатный почтовый скрипт от сайта JPCars.com</title>
<style type="text/css">{ }
<!--
select, input, textarea, p { font-family: Verdana, Arial; font-size: 13px }
font                       { font-family: Verdana, Arial }
-->
</style>
</head>
<body><center><table border="0" cellpadding="0" cellspacing="0" width="100%" height="100"><tr><td></td></tr></table>
 

 
recip.txt
 

Код:
akim@cobaka.ru | Вопрос в Акимат
 

 
Если не трудно подскажите пошагово (типа копировать-вставить) функцию которую надо использоват вместо функции imap_binary.

Всего записей: 92 | Зарегистр. 29-06-2005 | Отправлено: 07:27 25-04-2007
TXT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да, присоединяюсь к вопросу:
как быстро переделать скпирт отправки формы на мыло с mail() на SMTP (ибо mail() отключен теперь) ?

Всего записей: 16 | Зарегистр. 10-02-2006 | Отправлено: 18:25 30-04-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TXT

Цитата:
как быстро переделать скпирт отправки формы на мыло

использовать почтовые классы.. например phpmailer

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 18:29 30-04-2007
TXT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Почитал http://php.russofile.ru/ru/translate/mail/phpmailer/
Спасибо, подр..., посмеялсо...

Всего записей: 16 | Зарегистр. 10-02-2006 | Отправлено: 22:40 30-04-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TXT

Цитата:
Спасибо, подр..., посмеялсо...  

слэнг оставляем за пределами данного форума.
что то непонятно в описании?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:42 30-04-2007 | Исправлено: Cheery, 22:48 30-04-2007
TXT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
 
Кажется, понятно только одно - легкого перехода с элементарной формы php(mail) на smtp не получится

Всего записей: 16 | Зарегистр. 10-02-2006 | Отправлено: 13:58 01-05-2007
QT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста разобраться с он-лайн формой! Нужно сделать так, чтобы была возможность выбора нескольких пунктов из списка... форма написана, но обработка не верная.. при выборе нескольких пунктов в поле "Тип товара", сейчас на имейл приходит лишь один пункт!!! А мне надо, чтобы несколько (к примеру: 2 или 3), неподскажите как это сделать? вот часть страницы с кодом формы и обработчика:
 

Код:
 
 
...
 
<?php  
    
    if (isset($_POST[save_hid])) {
 
$p = $_POST;
$text = "Заказ с сайта\n\n";
$text .= "ФИО: \t\t ".$p[T1]."\n";
$text .= "E-mail: \t\t ".$p[T2]."\n";    
$text .= "Тип товара: \t\t ".$p[D1]."\n";
$text .= "Тип оплаты: \t\t ".$p[D2]."\n";
$text .= "Текст: \t\t ".$p[T3]."\n";
         
        
if (isset($p[metry])) foreach($p[metry] as $k =>$v) {
  if (trim($v) != '') $text .= "\t ".$k.") ".$v."\n";
}
 
if (mail("example@mail.ru", "Заказ", $text, "")) echo "<b>Спасибо! Ваша заявка отправлена</b>"; else echo "ОШИБКА! Письмо не отправлено!";
        
    }
//    echo "<pre>";
//    print_r($_POST);
//    echo "</pre>";
 
?>
 
<form method="POST" action="">
<input type="hidden" name="save_hid" value="1">
                                
<p> ФИО<input type="text" name="T1" size="70"></p>
 
<p>E-mail<input type="text" name="T2" size="70"></p>
 
<p>Тип товара:<select size="2" name="D1" multiple>
<option value="пункт 1">пункт 1</option>
<option value="пункт 2">пункт  2</option>
<option value="пункт  3">пункт 3</option></select></p>
 
<p>Способ оплаты:<select size="2" name="D2">
<option value="Яндек-Деньги">Яндек-Деньги</option>
<option value="WebMoney (WMZ)">WebMoney (WMZ)</option></select></p>
 
<p class="news">Текст:<TEXTAREA class=inp type="text" name="T3" rows=4 cols="59"></TEXTAREA></p>
<p><input type="submit" value="Отправить"><input type="reset" value="Сброс"></p>
</form>
 
...
 
 

 
Заранее благодарю за помощь

Всего записей: 4 | Зарегистр. 04-05-2007 | Отправлено: 04:58 04-05-2007 | Исправлено: QT, 05:00 04-05-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
QT

Цитата:
 <p>Тип товара:<select size="2" name="D1[]" multiple>  


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:01 04-05-2007 | Исправлено: Cheery, 05:06 04-05-2007
QT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
просто поставить квадратные скобки и все? я попробовала - не помогло....

Всего записей: 4 | Зарегистр. 04-05-2007 | Отправлено: 05:14 04-05-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
QT

Цитата:
просто поставить квадратные скобки и все? я попробовала - не помогло....

что не помогло? все помогло.. просто $_POST['D1'] теперь массив и обращаться с ним надо как с массивом

Код:
 $textw .= "Тип товара: \t\t ".(is_array($p[D1])?join(",",$p[D1]):$p[D1])."\n";


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:16 04-05-2007 | Исправлено: Cheery, 05:17 04-05-2007
QT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, теперь пункт "Тип товара" вобще не приходит на имейл... (((

Всего записей: 4 | Зарегистр. 04-05-2007 | Отправлено: 05:27 04-05-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
QT

Цитата:
теперь пункт "Тип товара" вобще не приходит на имейл.

ну неправда.. ищите у себя ошибки в коде

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:30 04-05-2007
QT

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нашла) в $textw . , w -  лишня))) не заметила сразу...  
 
спасибо огромное!!!

Всего записей: 4 | Зарегистр. 04-05-2007 | Отправлено: 05:42 04-05-2007 | Исправлено: QT, 15:22 04-05-2007
PRGMM

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
НЕ парь мозги почитай книги www.***.org




за рекламу /Cheery/

Всего записей: 11 | Зарегистр. 22-04-2007 | Отправлено: 23:22 04-05-2007 | Исправлено: Cheery, 23:27 04-05-2007
SCUPER

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди помогите деревянно оловяному
есть форма помогите сделать чеото чтоб отправить на мыло  
 
Подробнее...
ЗАРАНЕЕ БЛАГОДАРЮ  
ПРОБОВАЛ ПОСТАВЛЯТЬ ВСЕ НЕ ПОМОГАЕТ ПОМОГИТЕ УМЕЛЬЦЫ ПОЖАЛУЙСТА

Всего записей: 13 | Зарегистр. 10-02-2007 | Отправлено: 23:34 04-05-2007 | Исправлено: Cheery, 23:34 04-05-2007
Tiglatpalasar

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вопрос: использовал пхп-скрипт из этой ветки (самый первый). На денвере все письма благополучно приходили в отладочную директорию.  На сервере - ни в какую. Пробовал сначала на freeweb7.com (там функция мейл включена точно), потом на holm.ru.
Ничего на ящик не приходит. Ящик тоже хороший - обычно доходит все, и очень быстро.
Мне было необходимо чтобы скрипт работал из-под joomla, думал, может в этом проблема, но сам по себе скрипт тоже не работает...

Всего записей: 8 | Зарегистр. 28-01-2007 | Отправлено: 21:42 03-07-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tiglatpalasar

Цитата:
На сервере - ни в какую. Пробовал сначала на freeweb7.com (там функция мейл включена точно), потом на holm.ru.
Ничего на ящик не приходит. Ящик тоже хороший - обычно доходит все, и очень быстро

если хостинги бесплатные, то функция mail отключена.. иначе - смотреть определяются ли передаваемые переменные в скрипте

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:08 03-07-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl, PHP: отправка формы на e-mail


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru