Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.02.2009, 17:30
Аспирант
Отправить личное сообщение для madgals Посмотреть профиль Найти все сообщения от madgals
 
Регистрация: 27.12.2008
Сообщений: 53

отправка сообщений обратной связи
есть форма:


<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
	    <p><input name="to[]" type="checkbox" value="rozn" checked /> Для розничных клиентов</p>
		<p><input name="to[]" type="checkbox" value="opt" /> Для оптовых и корпоративных клиентов</p>
		<p><input name="to[]" type="checkbox" value="coop" /> Сотрудничество по проектам</p>
		<p><input name="to[]" type="checkbox" value="prices" /> Товары и цены</p>
		<p><input name="to[]" type="checkbox" value="service" /> Сервис и гарантия</p>
		<p><input name="to[]" type="checkbox" value="ordinary" /> Общие вопросы</p>
		<p><input name="to[]" type="checkbox" value="vacancy" /> Работа в компании</p>
    	<span class="mailer">От кого:</span> <br />
		<input name="from" type="text" size="50"/><br />
		<span class='t2'>например, </span>
		<span class='t2' style='color:#3ac2db; font-weight:bold;
 background: url(/images/pt.jpg) repeat-x bottom;'>user@example.com
</span><span class="t2"> или </span>
		<span class='t2' style='color:#3ac2db; font-weight:bold; 
background: url(/images/pt.jpg) repeat-x bottom;'>
User &lt;user@example.com&gt;</span>
		<br /><br />
		<span class="mailer">Тема сообщения:</span> <br />
		<input name="subject" type="text" size="50"/>
		<br /><br />
		<span class="mailer">Текст сообщения:</span> <br />
		<textarea name="body" cols="50" rows="10"></textarea><br /><br />
		<input name="mailer" type="submit" class="mailer" value="Отправить" />
</form>



и есть скрипт обработки:


if (count($_POST["to"])>1) { 
                for ($i=0; $i<count($_POST["to"]); $i++) { 
                    switch ($_POST["to"][$i]) { 
                        case "rozn": 
                            $MailTo="1@domen.ru"; 
                            $MailCC=""; 
                            break; 
                        case "opt": 
                            $MailTo="2@domen.ru"; 
                            $MailCC=""; 
                            break; 
                        case "coop": 
                            $MailTo="3@domen.ru"; 
                            $MailCC="2@dome.ru,4@domen.ru"; 
                            break; 
                        case "prices": 
                            $MailTo="5@domen.ru"; 
                            $MailCC="6@domen.ru,2@domen.ru"; 
                            break; 
                        case "service": 
                            $MailTo="7@domen.ru"; 
                            $MailCC="4@domen.ru"; 
                            break; 
                        case "ordinary": 
                            $MailTo="4@domen.ru"; 
                            $MailCC="5@domen.ru"; 
                            break; 
                        case "vacancy": 
                            $MailTo="8@domen.ru"; 
                            $MailCC="7@domen.ru,6@domen.ru,5@domen.ru,6@domen.ru"; 
                            break; 
                    } 
                    $MailSubj = htmlspecialchars($_POST["subject"]); 
                    $MailFrom = htmlspecialchars($_POST["from"]); 
                    $MailMessage = htmlspecialchars($_POST["body"]); 
                    $headers = 'From:'. $MailFrom. "\r\n"; 
                    $headers .= 'Cc:'. $MailCC; 
                    @mail($MailTo, $MailSubj, $MailMessage, $headers); 
} 
}


В итоге 4@domen.ru получит 3 одинаковых письма, 5@domen.ru - 2 письма и т.д. Как избежать этого ? В phpclub просьба не отправлять. Модераторы сегодня неадекватны более чем когда либо.
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2009, 18:24
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Во-первых, насколько я понимаю, вам нужно изменить первое условие на:
if (count($_POST["to"])>0) {

Иначе, для розничных клиентов вообще не сработает.

Сообщение от madgals
В итоге 4@domen.ru получит 3 одинаковых письма, 5@domen.ru - 2 письма и т.д.
"В итоге", это если все галочки отмечены? Если да, то вам, скорее всего, придется организовать 2 цикла: в первом вы будете собирать массивы адресов Mailto и MailCC, а во втором - отправлять письма. И до отправки писем нужно вычислить разницу между двумя массивами адресов, и убрать дублирование из MailCC.
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2009, 19:27
Аспирант
Отправить личное сообщение для madgals Посмотреть профиль Найти все сообщения от madgals
 
Регистрация: 27.12.2008
Сообщений: 53

спасибо за беспокойство ) на том же пхп клабе один модератор успел подкинуть эту идею пока другой модератор не удалил тему ))
Ответить с цитированием
  #4 (permalink)  
Старый 26.02.2009, 23:32
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

лучше пользуйся какой-нибудь готовой библиотекой, потому что через твою форму можно легко спам рассылать
кстати, зачем ты там htmlspecialchars используешь?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск