X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

2 страниц Открыть меню   1 2 >  
Ответить в данную темуНачать новую тему
> Модуль почтовой рассылки пользователям сайта, Нужна помощь!
Loader
сообщение 2011-01-10, 15:03
Сообщение #1
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Почти готов этот модуль, но есть пара нюансов.
Во-первых не могу победить встроенную функцию отправки писем, как ни бился, пишет ошибку "поля не заполнены", хотя всё вроде введено и передано куда надо. Кто знает, подскажите чего ей не хватает!
Во-вторых, после завершения отправки выводится экран, типа что всё отправлено, всё хорошо, НО! Нужно как-то сделать чтобы при повторном обращении (перезагрузке страницы) выбрасывало опять на редактор, иначе получится повтор отправки всех писем, что нехорошо (спам :blink: ). Это у меня тоже не получается!

Всё выглядит следующим образом:

Первая страница:



Логинимся, попадаем в редактор:



Заполняем поля, далее эта ошибка!:



И если бы ошибки не было, то:



При обновлении этой страницы должно выбрасывать в редактор, иначе повторно всё отправит! Это не получается!


Прикрепленные файлы
Прикрепленные файлы  notifications.rar ( 4.21 килобайт ) Скачиваний: 3
 
Перейти в начало страницы
+Цитировать сообщение
sanes
сообщение 2011-01-10, 15:07
Сообщение #2
Аноним
Иконка группы

Группа: Пользователи
Сообщений: 1 180
Регистрация: 2008-12-29
Из: Волгоград

Репутация:   нет  
Всего: 4


Что это за модуль? Не помню, есть ли в rc5 такой..
Перейти в начало страницы
+Цитировать сообщение
Jon
сообщение 2011-01-10, 15:10
Сообщение #3
Любитель
Иконка группы

Группа: Бета-тестеры
Сообщений: 282
Регистрация: 2009-07-12
Из: Москва

Репутация:   нет  
Всего: 0


Кстати очень нужный модуль.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-01-10, 15:11
Сообщение #4
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (sanes @ 2020-12-03 14:39)
Что это за модуль? Не помню, есть ли в rc5 такой..

Теперь есть! :D

P.S. Ещё желательно вывести прогресс отправки, но кроме как через echo ничего на ум не приходит :mellow:
Перейти в начало страницы
+Цитировать сообщение
sanes
сообщение 2011-01-10, 15:48
Сообщение #5
Аноним
Иконка группы

Группа: Пользователи
Сообщений: 1 180
Регистрация: 2008-12-29
Из: Волгоград

Репутация:   нет  
Всего: 4


Цитата (Loader @ 2020-12-03 14:39)
Теперь есть!
где?
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-01-10, 16:01
Сообщение #6
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (sanes @ 2020-12-03 14:39)
где?

В аттаче...ты чего? Неадекватный какой-то...
Перейти в начало страницы
+Цитировать сообщение
sanes
сообщение 2011-01-10, 16:15
Сообщение #7
Аноним
Иконка группы

Группа: Пользователи
Сообщений: 1 180
Регистрация: 2008-12-29
Из: Волгоград

Репутация:   нет  
Всего: 4


Loader, А попроще можешь быть? У меня под рукой нет RC5. Я хотел узнать, это доп. модуль или ты про El. 1.0? В EL 1.0 по памяти это дело уже есть.

Сообщение отредактировал sanes - 2011-01-10, 16:17
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-01-10, 16:34
Сообщение #8
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (sanes @ 2020-12-03 14:39)
У меня под рукой нет RC5. Я хотел узнать, это доп. модуль или ты про El. 1.0

Вот оно что, ясно.
Да, это дополнительный модуль для RC5.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-01-10, 17:09
Сообщение #9
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Loader @ 2020-12-03 14:39)
Во-первых не могу победить встроенную функцию отправки писем, как ни бился, пишет ошибку "поля не заполнены", хотя всё вроде введено и передано куда надо. Кто знает, подскажите чего ей не хватает!

Это я победил, дело за малым! :)
Остался второй вопрос и ещё нужно как-то вывести прогресс выполнения, или хотя-бя значок ожидания во время выполнения цикла отправки! HELP!!!
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-01-11, 0:21
Сообщение #10
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (Loader @ 2020-12-03 14:39)
Нужно как-то сделать чтобы при повторном обращении (перезагрузке страницы) выбрасывало опять на редактор, иначе получится повтор отправки всех писем, что нехорошо (спам ). Это у меня не получается

Самая простая и самая надежная защита от повторного POST запроса - это внедрить в состав POST запроса некоторый "маркер", который ставить при попадании на страницу с формой и обнулять при отправке этой формы. Это может быть кука или сессия. Выбирайте, что Вам больше по душе.

Цитата (Loader @ 2020-12-03 14:39)
...и ещё нужно как-то вывести прогресс выполнения (через javascript ?), или хотя-бя значок ожидания во время выполнения цикла отправки! HELP!!!

Тут, я так понимаю совсем нет ничего сложного. Заведите где-то картинку и показывайте ее сразу после того, как форма отправлена.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-01-11, 7:18
Сообщение #11
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2020-12-03 14:39)
Тут, я так понимаю совсем нет ничего сложного. Заведите где-то картинку и показывайте ее сразу после того, как форма отправлена.

Насколько я знаю, в Элеаноре есть встроенная функция показа значка загрузки. Хотелось бы использовать именно её.
А как дело обстоит с отображением прогресса? Это реально сделать?
Цитата (Alexander @ 2020-12-03 14:39)
Самая простая и самая надежная защита от повторного POST запроса - это внедрить в состав POST запроса некоторый "маркер", который ставить при попадании на страницу с формой и обнулять при отправке этой формы. Это может быть кука или сессия. Выбирайте, что Вам больше по душе.

Тут моих знаний пока не достаточно. Можно подробнее (с примерами :))?

Сообщение отредактировал Loader - 2011-01-11, 7:19
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-01-11, 17:53
Сообщение #12
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (Loader @ 2020-12-03 14:39)
Насколько я знаю, в Элеаноре есть встроенная функция показа значка загрузки. Хотелось бы использовать именно её.

ShowLoading и HideLoading для RC5. И CORE.ShowLoading И CORE.HideLoading для 1.0

Цитата (Loader @ 2020-12-03 14:39)
А как дело обстоит с отображением прогресса? Это реально сделать?

Нет. Сделать не реально. Потому что браузер посылает запрос на сервер. А когда придет ответ (и придет ли вообще) - это знать невозможно. Пример: ты когда общаешься с кем-то в аське ведь не знаешь, когда точно (через сколько секунд) тебе ответит твой собеседник :)

Цитата (Loader @ 2020-12-03 14:39)
Можно подробнее (с примерами )?

Разумеется. При заходе на страницу (не POST запрос), генерируем какую-то уникальную строку. Это можно сделать при помощи uniqid(). Дальше записываем эту строку в куку пользователю + в hidden элемент формы. После отправки формы (POST запрос) - читаем строку из куки и тут же удаляем куку. Дальше сравниваем строку из hidden формы со строкой, полученной из формы: если они совпадают, осуществляем отправку.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-01-12, 11:53
Сообщение #13
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2020-12-03 14:39)
ShowLoading и HideLoading для RC5. И CORE.ShowLoading И CORE.HideLoading для 1.0

А синтаксис вызова какой?

<?php

ShowLoading; - так не работает!

Mainclass->ShowLoading; - так тоже!

?>


Цитата (Alexander @ 2020-12-03 14:39)
Разумеется. При заходе на страницу (не POST запрос), генерируем какую-то уникальную строку. Это можно сделать при помощи uniqid(). Дальше записываем эту строку в куку пользователю + в hidden элемент формы. После отправки формы (POST запрос) - читаем строку из куки и тут же удаляем куку. Дальше сравниваем строку из hidden формы со строкой, полученной из формы: если они совпадают, осуществляем отправку.

Это слишком заморочено... вот если бы пример кода! :rolleyes:

Сообщение отредактировал Loader - 2011-01-12, 15:53
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-01-12, 20:35
Сообщение #14
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


ShowLoad() и HideLoad()

Пример кода, будет, наверное завтра.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-01-12, 20:50
Сообщение #15
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2020-12-03 14:39)
ShowLoad() и HideLoad()

Alexander ,
Fatal error: Call to undefined function ShowLoad() in /var/www/pdaki192/data/www/pda-kino.net.ru/modules/notifications/index.php on line 81
Цитата (Alexander @ 2020-12-03 14:39)
Пример кода, будет, наверное завтра.

ОК !

Сообщение отредактировал Loader - 2011-01-12, 20:51
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-01-13, 23:21
Сообщение #16
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2020-12-03 14:39)
Это может быть кука или сессия. Выбирайте, что Вам больше по душе.

Про сессию, если можно, пример? :rolleyes:
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-01-14, 21:09
Сообщение #17
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Loader, это JS функции, а не PHP.

Простой пример кода.
При показе формы:

$u=uniqid();
$Mainclass->SCookie('se-form',$u);
$cotnent.='... Код формы'.Template::Control('security','hidden',$u).'...Код формы...';


При отправке:

$cu=$Mainclass->GCookie('se-form');
$pu=isset($_POST['security']) ? ($_POST['security'] : false;
if($pu and $pu==$cu)
{
$Mainclass->SCookie('se-form',false);
//Можно отправлять.
}
$cotnent.='... Код формы'.Template::Control('security','hidden',$u).'...Код формы...';


Вот самый простой, надежный и примитивный вариант. Перед использованием кода, его необходимо понять.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-01-14, 21:17
Сообщение #18
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2020-12-03 14:39)
Loader, это JS функции, а не PHP.


Да я понял, как её вызвать-то??? :blink:

Цитата (Alexander @ 2020-12-03 14:39)
Вот самый простой, надежный и примитивный вариант. Перед использованием кода, его необходимо понять.


Так я же про сессию просил а не про куки!
Если можно про сессию пример? Этот я понял и усвоил!

P.S. Всё работает как часики! Спасибо, Александр!

Сообщение отредактировал Loader - 2011-01-14, 21:57
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-01-14, 22:41
Сообщение #19
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (Loader @ 2020-12-03 14:39)
Да я понял, как её вызвать-то???

Дык. В JS Файле:
ShowLoad();

А потом где-нибудь
HideLoad():


Цитата (Loader @ 2020-12-03 14:39)
Если можно про сессию пример?

Ну а что, с сессией. С сессиея вообще все просто. Стартуете сессию. Далее, перед показом формы, ставите какой-то флаг
$_SESSION['sent']=false;


В момент отправки проверяете:
$_SESSION['sent']=true;


А после отправки этот флаг ставите в true.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-01-14, 22:52
Сообщение #20
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2020-12-03 14:39)
Дык. В JS Файле:


Вот именно, что в JS Файле! А как из php-файла вызвать?
Перейти в начало страницы
+Цитировать сообщение

2 страниц Открыть меню   1 2 >
Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0549 сек.    11 запросов    GZIP включен    Сейчас: 2020-12-03, 13:39