Контактная форма для нескольких адресатов в WP
Новая тема Написать ответ
# Пт Май 09, 2008 10:36 pmKonkoff Зарег.: 01.10.2007 ; Сообщ.: 71Ответить с цитатой
У меня на сайте есть 2 различные странички с каждой из которых мне нужно отправлять письмо на разные ящики,
ну типа с первой странички отправляются данные из контактной формы на первый почтовый адрес, а со второй странички на другой почтовый адрес.

Юзаю такой скрипт (копипастил отсюда www.php-mail.ru) - ВСЁ РАБОТАЕТ, ПОЧТА ДОХОДИТ, но в форме нет полей с контактами и проверки на правильность заполнения:
Код:
<?php
// если была нажата кнопка "Отправить"
if($_POST['submit']) {
        // $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и  substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменной $_POST['mess'] все аналогично
        $title = substr(htmlspecialchars(trim($_POST['title'])), 0, 1000);
        $mess =  substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);
        // $to - кому отправляем
        $to = 'test@test.ru';
        // $from - от кого
        $from='test@test.ru';
        // функция, которая отправляет наше письмо.
        mail($to, $title, $mess, 'From:'.$from);
        echo 'Спасибо! Ваше письмо отправлено.';
}
?>
<form action="" method=post>

<p>Вводный текст перед формой <p>
              <div align="center">
              Teма<br />
              <input type="text" name="title" size="40"><br />
              Сообщение<br />
              <textarea name="mess" rows="10" cols="40"></textarea>
              <br />
              <input type="submit" value="Отправить" name="submit"></div>
</form>


На том же сайте есть другой расширенный скрипт, решил я его заюзать
!!! Что удивительно, когда я его вбил в пост, сохранился, но не публиковался!!! и сделал превью - скрипт работал и отправлял письма, как только я опубликовался, то после кнопки Отправить отправка перестала происходить и WP начал выдавать 404 ошибку
Код:
<?php
function show_form()
{
?>
<form action="" method=post>
<div align="center">
              <br />Имя*<br />
              <input type="text" name="name" size="40">
              <br />Контактный телефон<br />
              <input type="text" name="tel" size="40">
              <br />Контактный email*<br />
              <input type="text" name="email" size="40">
              <br />Teма<br />
              <input type="text" name="title" size="40">
              <br />Сообщение*<br />
              <textarea rows="10" name="mess" cols="30"></textarea>
              <br /><input type="submit" value="Отправить" name="submit">
</div>
</form>
* Помечены поля, которые необходимо заполнить
<?
}

function complete_mail() {
        // $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и  substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
        $_POST['title'] =  substr(htmlspecialchars(trim($_POST['title'])), 0, 1000);
        $_POST['mess'] =  substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);
        $_POST['name'] =  substr(htmlspecialchars(trim($_POST['name'])), 0, 30);
        $_POST['tel'] =  substr(htmlspecialchars(trim($_POST['tel'])), 0, 30);
        $_POST['email'] =  substr(htmlspecialchars(trim($_POST['email'])), 0, 50);
        // если не заполнено поле "Имя" - показываем ошибку 0
        if (empty($_POST['name']))
             output_err(0);
        // если неправильно заполнено поле email - показываем ошибку 1
        if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
             output_err(1);
        // если не заполнено поле "Сообщение" - показываем ошибку 2
        if(empty($_POST['mess']))
             output_err(2);
        // создаем наше сообщение
        $mess = '
Имя отправителя:'.$_POST['name'].'
Контактный телефон:'.$_POST['tel'].'
Контактный email:'.$_POST['email'].'
'.$_POST['mess'];
        // $to - кому отправляем
        $to = 'test@test.ru';
        // $from - от кого
        $from='test@test.ru';
        mail($to, $_POST['title'], $mess, "From:".$from);
        echo 'Спасибо! Ваше письмо отправлено.';
}

function output_err($num)
{
    $err[0] = 'ОШИБКА! Не введено имя.';
    $err[1] = 'ОШИБКА! Неверно введен e-mail.';
    $err[2] = 'ОШИБКА! Не введено сообщение.';
    echo '<p>'.$err[$num].'</p>';
    show_form();
    exit();
}

if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>


Сижу и думаю, может есть что попроще для WP? Плагин может какой типа Contacts Form, только с отправкой в зависимости от выбора на разные акки или что нить ещё может постоветуете? И с какого хрена скрипт до публикации в превью выполнялся, а как только я его опубликовал - перестал выполняться?
Стоит WP2.5.1 exec-php
# Пт Май 09, 2008 11:16 pmKonkoff Зарег.: 01.10.2007 ; Сообщ.: 71Ответить с цитатой
Сам задал влпрос - сам отвечу!
Пошёл и нашёл плагин contact-form-7
искать на офф сайте WP
позволяет создавать бесконечное кол-во форм и кастомизировать каждую из них (поля, капчи и многое другое)
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ
 
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.