Всем доброго времени суток. Вопрос, собственно, в том, чтобы организовать пользователю выбор, кому отправить e-mail через форму обратной связи. HTML форма вида: Код (Text): <form action="send.php" method="POST"> <table border="0" cellspacing="1" cellpadding="3" align="center"> <tr> <td width="150">Имя:<font color="red">*</font></td> <td colspan="2"> <input type="hidden" name="zagolovok" value="Сообщение со страницы 'Контакты' (site.ru)"> <input type="text" name="user" size="20" maxlength="25"></td> </tr> <tr> <td width="150">Ваш E-mail:<font color="red">*</font></td> <td colspan="2"><input type="email" name="email" size="20"></td> </tr> <tr> <td width="150">Тема:<font color="red">*</font></td> <td colspan="2"><input type="text" name="tema" size="50" maxlength="50"></td> </tr> <tr> <td width="150">Текст сообщения:<font color="red">*</font></td> <td colspan="2"><textarea cols="48" rows="6" name="mes" maxlength="500"></textarea></td> </tr> <tr> <td width="150"></td> <td><input type="submit" name="ok" value="Отправить"></td> </tr> </table> </form> Обработчик, с помощью которого будет произведена отправка, соответственно (файл send.php): Код (Text): <?php if($_POST['ok']) { $email=$_POST['email']; if (empty($email)) { echo "E-mail вводить <a href='fguestbook.php'>обязательно</a>.<br>"; } else { $tema = $_POST['tema']; if (empty($tema)) { echo "Необходимо <a href='fguestbook.php'>указать тему</a> сообщения.<br>"; } else { $user = $_POST['user']; if (empty($user)) { echo "Вы не ввели свое имя. <a href='fguestbook.php'>Представьтесь</a>, пожалуйста.<br>"; } else { $mes = $_POST['mes']; if (empty($mes)) { echo "Необходимо <a href='fguestbook.php'>ввести</a> текст сообщения<br>"; } else { $zagolovok = $_POST['zagolovok']; $zagolovok = '=?koi8-r?B?'.base64_encode(convert_cyr_string($zagolovok, "w","k")).'?='; $to = 'name@site.ru'; $from=$email; $tema = htmlspecialchars(stripslashes($tema)); $user = htmlspecialchars(stripslashes($user)); $mes = htmlspecialchars(stripslashes($mes)); mail($to, $zagolovok, 'Пользователь: '.$user."\n".'--------------------'."\n".'Тема сообщения: '.$tema."\n".'--------------------'."\n".'Текст сообщения: '."\n".$mes."\n", "From:".$from); echo '<table border=0 width=100% height=100%><tr><td align=center><font size=6 color=green>Спасибо! Ваше письмо отправлено.</font><br><br><font size=4><a href=form.php>Вернуться обратно</a></font></td></tr></table>'; } } } } } ?> (в действительности все это будет выглядеть малость посложнее, т.к. здесь не указал признаков капчи.) Теперь хочу вставить в форму дополнительное поле, где пользователь выбирает, кому отправить письмецо: Код (Text): <select name=email > <option value=name1@domain.ru selected>Админ 1 <option value=name2@domain.ru>Админ 2 <option value=name3@domain.ru>Админ 3 </option> </select> Но в этом случае адреса e-mail будут "светиться" в html коде, что не есть хорошо в плане защиты e-mail от спам-ботов. Как мне прикрутить этот вариант, чтобы в html коде не было видно e-mail адресов, котрые прописаны в форме? Уже третьи сутки бьюсь над этим, ничего путного не нахожу. Заранее всем спасибо
На сайте будет 3 раздела, за каждый раздел отвечает определенное лицо. Нужно сделать так, чтобы можно было обратиться к админу определенного раздела, не тревожа остальных. Вот именно этого я и добиваюсь.
Правильно ли я понял, есть форма обратной связи где человек пишет свое письмо.Отправляет письмо твое приложение? Ну пропиши что то в html селекте, когда запрос прийдет к тебе проверишь что данные правильные и отправишь письмо.Мейлы будут прописаны в скрипте.
может лучше посылать их на один имеил к которому имеют доступ все админы , но делать пометку в теме сообщения. а выбор админа не отличается от выбора любого другого параметра в HTML формах. Что вас конкретно смущает?
Об этом тоже думал, но это не выход - нужно отправлять непосредственно нужному лицу... Когда-то попадался подобный скрипт (с возможностью выбора адресата), почти весь и-нет перекопал, не вижу... А можно было бы оттуда вариант извлечь...
я чета не понимаю в чем затык. вы хотите чтобы вам дали код обработки одного выпадающего списка или кучки радио? тогда это в фриланс за деньги или в бесплатную помощь, если вы сами не собираетесь ничего делать или платить.
Здесь без разницы, кучка радио или выпадающий список - все одно. Я не прошу мне код писать или не делаю никому заказа. Просто прошу "навести" на правильное решение. Остальное сам сделаю. Мне нужно понять, как организовать это дело. Ну пропишу я адреса внутри обработчика, а вот как эти адреса через "селект" заставить работать (да так, чтобы в html коде не светились) - вот этого понять не могу... Если пропишу адреса внутри select, через неделю все эти почтовые ящики будут загажены спамом...
Замена полученной записи из формы на нужную (в данном случае на e-mail получателя). Полностью готовый вариант, может кому еще пригодится Форма: Код (Text): <form action="send.php" method="POST"> <table border="0" cellspacing="1" cellpadding="3" align="center"> <tr> <td width="150">Ваше имя:</td> <td colspan="2"> <input type="hidden" name="zagolovok" value="Сообщение со страницы 'Контакты' (site.ru)"> <input type="text" name="user" size="30" maxlength="25"></td> </tr> <tr> <td width="150">Ваш E-mail:</td> <td colspan="2"><input type="email" name="email" size="30"></td> </tr> <tr> <td width="150">Получатель:</td> <td colspan="2"> <select name=adresat style="width: 400px;"> <option value=em1 selected>Админ 1 <option value=em2>Админ 2 <option value=em3>Админ 3 </option> </td> </tr> <tr> <td width="150">Тема:</td> <td colspan="2"><input type="text" name="tema" style="width: 400px;" maxlength="50"></td> </tr> <tr> <td width="150">Текст сообщения:</td> <td colspan="2"><textarea style="width: 400px;" rows="8" name="mes" maxlength="500"></textarea></td> </tr> <tr> <td width="150">Проверочный код:</td> <td><img src="../captcha.php" name="captcha" size="20"></td><td><input type=text name=kapcha size=10 style='font-size:18px; text-align:center' maxlength="10"></td> </tr><tr> <td width="150"></td> <td><input type="submit" name="ok" value="Отправить"></td> </tr> <tr> <td colspan="3" align="center"><br><b>Все поля должны быть заполнены</b></td> </tr> </table> </form> Обработчик Код (Text): <?php session_start(); if($_POST['kapcha'] != $_SESSION['rand_code']) echo "Неверно введён проверочный код, или не заполнено одно из полей. <a href=form.php>Попробуйте снова...</a>"; else { $adresat=$_POST['adresat']; $adresat = str_replace("em1","name1@site.ru",$adresat); $adresat = str_replace("em2","name2@site.ru",$adresat); $adresat = str_replace("em3","name3@site.ru",$adresat); if($_POST['ok']) { $email=$_POST['email']; if (empty($email)) { echo "E-mail вводить <a href=form.php>обязательно</a>.<br>"; } else { $tema = $_POST['tema']; if (empty($tema)) { echo "Необходимо <a href=form.php>указать тему</a> сообщения.<br>"; } else { $user = $_POST['user']; if (empty($user)) { echo "Вы не ввели свое имя. <a href=form.php>Представьтесь</a>, пожалуйста.<br>"; } else { $mes = $_POST['mes']; if (empty($mes)) { echo "Необходимо <a href=form.php>ввести</a> текст сообщения<br>"; } else { $zagolovok = $_POST['zagolovok']; $zagolovok = '=?koi8-r?B?'.base64_encode(convert_cyr_string($zagolovok, "w","k")).'?='; $to = $adresat; $from=$email; mail($to, $zagolovok, 'Пользователь: '.$user."\n".'--------------------'."\n".'Тема сообщения: '.$tema."\n".'--------------------'."\n".'Текст сообщения: '."\n".$mes."\n", "From:".$from); echo '<table border=0 width=100% height=100%><tr><td align=center><font size=6 color=green>Спасибо! Ваше письмо отправлено.</font><br><br><font size=4>Перенаправление...</font></td></tr></table>'; } } } } } } ?> Если где-то, в чем-то запутался, прошу подправить
йоперный стыд, бро... Три раза подряд дергать str_replace, рассчитывая, что хотя бы один из них сработает, при том, что данные в запросе могут быть любыми.. Код (PHP): switch ($_POST['adresat']){ case('em1'): $adresat = 'name1@site.ru'; break; case('em2'): $adresat = 'name2@site.ru'; break; case('em3'): $adresat = 'name3@site.ru'; break; default: die ('<h1>ГРЯЗНЫЙ ХАКЕР, ТЫ УМРЕШЬ ЧЕРЕЗ 7 ДНЕЙ!!!</h1>'); break; //на случай, если чьи-то шаловливые ручонки пришлют левые данные. }
Спасибо, вариант тоже неплохой. Хоть и предыдущий тоже работает, единственный минус в том, что действий больше выполняется при обработке... ps/ прошу сильно не пинать, я в этом деле новичок... пока только изучаю php
Тоже? Он не "тоже неплохой", он правильный. Оно не работает. Оно прокатывает. Сразу такой тебе совет - никогда не бери за привычку оценивать что-то по принципу "лишь бы работало". Так и зубы можно дергать через задницу, только вот гуманно ли? Надо всегда относиться к своему коду критически. Ругать его. Он всегда в чем-то будет не доделан. Твой, мой, любой. У меня было что мысли в кучу, написал огромную приблуду, радуюсь, на след утро глянул на свежую голову - а там...мать моя женщина...и еще 2 дня убил на рефакторинг. не просто больше, в три таза больше. 300% увеличение нагрузки на сервер. Я уже не раз давал тут совет и дам его тебе - умножай все на миллион. Как будто разом к тебе пришел миллион человек. И сразу поймешь, где много, а где нет. В коде, если ты хочешь сделать что-то красивое, что-то эффективное, что-то по-настоящему хорошее, не должно быть ничего лишнего. Кроме того, это не единственный минус. Я не просто так написал про то, что у тебя нет гарантий никаких в коде. Мой код гарантирует, что любой результат будет обработан. Твой код гарантирует, что с вероятностью 33% одна из строчек скорректирует строку нужным образом, при условии, что входящие данные будут строго те, которые они знают. Да, можно твой код, кстати, записать в одну строку, но он все равно не безопасен. Я открою страничку твоего сайта, найду эту форму, открою код страницы, заменю значения и вуаля - я вбиваю любой email, и твоя система пошлет на него любое письмо. Через тебя можно будет слать спам. Просто потому что строка не будет обработана и пойдет дальше в том виде, в каком пришла. Интернет - крайне агрессивная среда. Пользователь здесь - твой противник, а не друг.
Спасибо за разъяснение. Я это уже понял после того, как написал предыдущий пост. Еще раз огромное спасибо за помощь