0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 3701 Просмотров
*

shturmanoid

  • Захожу иногда
  • 62
  • 0 / 0
Artio JoomSEF 3.9.0
K2 2.5.3

Сначала установил К2, в шаблон материала вшил вот такую форму обратной связи:
Цитировать
<?php  global $srr;
$srr=$this->item->title;   
function show_form()
{
?>
<fieldset>
<legend>Отправить запрос по этому товару:</legend>
<form action="" method=post>
<table><tr><td>             
              Товар:&nbsp;&nbsp;&nbsp;</td><td>
              <input type="text" name="id" size="33" value="<?php echo  $GLOBALS["srr"]; ?>"></td></tr>
           <tr><td>Имя:&nbsp;&nbsp;&nbsp;</td><td>
              <input type="text" name="name" size="33"></td></tr>
              <tr><td>Контактный телефон:&nbsp;&nbsp;&nbsp;</td><td>
              <input type="text" name="tel" size="33"></td></tr>
              <tr><td>Контактный email:&nbsp;&nbsp;&nbsp;</td><td>
              <input type="text" name="email" size="33"></td></tr>
           <tr><td>Teма:&nbsp;&nbsp;&nbsp;</td><td>
              <input type="text" name="title" size="33" value="<?php echo  $GLOBALS["srr"]; ?>"></td></tr>
              <tr><td>Письмо:&nbsp;&nbsp;&nbsp;</td><td>
              <textarea rows="15" name="mess" cols="40"></textarea></td></tr>
              <tr><td><input type="submit" value="Отправить" name="submit"></td><td></td></tr>
</table>
</form>
<p>Все поля необходимо заполнить!
</fieldset>
<?
}

function complete_mail() {
        // $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и  substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
        $_POST['id'] = substr(htmlspecialchars(trim($_POST['id'])), 0, 1000);
        $_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']))
        {
        echo '<font style="color:red;"><b>Вы не указали свое имя, повторите попытку, пожалуйста.</b></font></br>';
        //     output_err(0);
         show_form();}
        else
       
        if (empty($_POST['tel']))
        {
        echo '<font style="color:red;">Вы не указали свой номер телефона, повторите попытку, пожалуйста.</font></br>';
        //     output_err(0);
         show_form();}
        else
         
        // если неправильно заполнено поле email - показываем ошибку 1
        if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
        {
        echo '<font style="color:red;">Вы ввели некорректный email, повторите попытку, пожалуйста.</font></br>';
        //    output_err(1);
        show_form();}
        else
       
        // если не заполнено поле "Сообщение" - показываем ошибку 2
        if(empty($_POST['mess']))
        {
        echo '<font style="color:red;">Вы не написали сообщение, повторите попытку, пожалуйста.</font></br>';
        //return false;
        show_form();}
        //    output_err(2);
        // создаем наше сообщение

        else {
        $mess = '
Со страницы:'.$_POST['id'].'
Имя отправителя:'.$_POST['name'].'
Контактный телефон:'.$_POST['tel'].'
Контактный email: '.$_POST['email'].'
Сообщение:'.$_POST['mess'];
        // $to - кому отправляем
        $to = 'ya@ya.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();
?>
без ЧПУ форма работала чудесно.
Потом установил JoomSEF, и форма работать перестала. Кнопка отправить ведет теперь на страницу 404, но не Джумсефовскую а на Джумловскую. Подскажите, пожалуйста, что нужно исправить, чтобы форма работала?
*

shturmanoid

  • Захожу иногда
  • 62
  • 0 / 0
Заключил форму во фрейм. Все работает. Даже лучше, потому что перегружается не вся страница, а только содержимое фрейма. Но теперь функционал стал проще, не могу передать значение названия материала в форму, не хватает знаний.
*

MeTaN

  • Осваиваюсь на форуме
  • 32
  • 1 / 0
Щас с такой же траблой столкнулся. Кто нибудь решил? Или может есть какие-то человечие плагины для K2 пусть даже платные. Задача такая, каталог мест отдыха на побережье, у каждого элемента каталога(гостиница, база отдыха, частный дом) есть свой емаил, хотелось бы чтобы на странице с полным описанием элемента каталога рендерилась форма обратной связи с отправной именно на адрес почты этого каталога.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает SEF

Автор snakeru54

Ответов: 12
Просмотров: 337
Последний ответ 15.03.2021, 20:49:28
от wishlight
Artio JoomSEF ничего не делает. Joomla! 1.5

Автор ybosco

Ответов: 5
Просмотров: 658
Последний ответ 05.06.2019, 18:53:26
от draff
[РЕШЕНО]лавная не работает без /index.php

Автор lexxbry

Ответов: 1
Просмотров: 742
Последний ответ 22.08.2018, 14:52:51
от lexxbry
Неправильно работает отображение модулей при включенном SEF

Автор art22

Ответов: 2
Просмотров: 1016
Последний ответ 14.02.2017, 00:18:04
от art22
Не работает стандартный SEF

Автор AlSa2

Ответов: 12
Просмотров: 1755
Последний ответ 09.12.2016, 16:16:18
от fsv