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

Sergeyy

  • Захожу иногда
  • 154
  • 3 / 0
Здравствуйте уважаемые форумчане!
Написал модуль подписки неавторизованным пользователям на новые комментарии.
Появилась пара вопросов мне непонятных.

helper.php
Код: php
<?php
// no direct access
defined('_JEXEC') or die;
class ModMailHelper
{
function getPost()
{
$app = JFactory::getApplication();
$input = $app->input;
$ta=$input->get('hel');
if($ta=='hel')
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
$option = JRequest::getVar('option', '');
$id = JRequest::getString('id');
$lang = JFactory::getLanguage()->getTag();
$mail = $input->get('email', '', 'String');
$user = JFactory::getUser();
if ($user->get('id'))
{
$userid = (int) $user->get('id');
$name = $user->name;
}
else
{
$userid = 0;
$name = 0;
}
$db = JFactory::getDbo();
$query = $db->getQuery( true )
    ->select('(id)')
    ->from($db->quoteName('#__jcomments_subscriptions'))
    ->where ($db->quoteName('email'). ' = ' . $db->quote($mail))
    ->where ($db->quoteName('object_id'). ' = ' . $db->quote($id));
$xid = $db->setQuery( $query )->loadResult();
if (!$xid)
{
$query = $db->getQuery(true);
$query->insert($db->quoteName('#__jcomments_subscriptions'));
$columns = array( $db->quoteName('email'),
$db->quoteName('object_id'),
$db->quoteName('lang'),
$db->quoteName('object_group'),
$db->quoteName('userid'),
$db->quoteName('name'),
$db->quoteName('hash'),
$db->quoteName('published'));
$query->columns($columns);
$query->values($db->Quote($mail)
      . ', ' . $db->quote($id)
      . ', ' . $db->quote($lang)
      . ', ' . $db->quote($option)
      . ', ' . $db->quote($userid)
      . ', ' . $db->quote($name)
      . ', ' . $db->quote(md5($id . $option . $userid . $mail . $lang))
      . ', ' . $db->quote(1));
$db->setQuery($query);
$db->query();
if ($query)
{ // Сообщение о подписке
$app->enqueueMessage('Вы подписаны на уведомления о новых комментариях');
}
}
else
{ // Сообщение об ошибке
$app->enqueueMessage('Вы уже подписаны на уведомления о новых комментариях!', 'error');
}}}}
?>

tmpl/default.php
Код: php
<?php
// No direct access to this file
defined('_JEXEC') or die;
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');

$option = JRequest::getVar('option', '');
$view = JRequest::getVar('view', '');
if ($option == $params->get('option') && $view == $params->get('view')){
?>

<div class="mail<?php echo $moduleclass_sfx ?>" >

<form action="" name="adminForm" id="adminForm" method="post" class="form-validate" >
      <input  id="email" name="email" type="text" class="inputbox required validate-email" size="20" /><button type="submit" >Подписаться</button>
      <input type="hidden" name="task" value="" />
      <input type="hidden" name="hel" value="hel" />

<?php 
$url = $_SERVER['HTTP_REFERER'];
$return = base64_encode($url);
?>
<input type="hidden" name="return" value="<?php echo $return; ?>" />
<?php echo JHtml::_('form.token'); ?>
</form>
</div>
<?php
}
?>

При обнавлении страницы (F5) снова происходит отправка данных
Как это решить?

Вот эта строчка смущает       JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
В нужное ли место и правильно я её вставил?

Буду очень благодарен за доработку модуля
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
В сообщении о подписке добавь
Код
$app->redirect($_SERVER['HTTP_REFERER']);

После того как будет выполнен код тебе перенаправит на туже страницу где ты и был, это считается как перезагрузка страницы, но сообщение будет выводиться в любом случае...
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Sergeyy

  • Захожу иногда
  • 154
  • 3 / 0
В сообщении о подписке добавь
Код
$app->redirect($_SERVER['HTTP_REFERER']);

После того как будет выполнен код тебе перенаправит на туже страницу где ты и был, это считается как перезагрузка страницы, но сообщение будет выводиться в любом случае...
Ок! Спасибо работает!
Вот этот код в шаблоне значит не нужен:
Код
<?php  
$url = $_SERVER['HTTP_REFERER'];
$return = base64_encode($url);
?>
<input type="hidden" name="return" value="<?php echo $return; ?>" />
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Вот этот код в шаблоне значит не нужен:
Код
<?php  
$url = $_SERVER['HTTP_REFERER'];
$return = base64_encode($url);
?>
<input type="hidden" name="return" value="<?php echo $return; ?>" />

Нет, он уже не нужен...
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль JComments Latest

Автор smart

Ответов: 574
Просмотров: 332818
Последний ответ 05.07.2023, 16:42:32
от sertlan
Как вместо "Недостаточно прав для написания комментария" вывести модуль?

Автор VAlex1983

Ответов: 5
Просмотров: 2649
Последний ответ 14.09.2022, 11:43:14
от Vlad1
Модуль для вывода последних комментариев из JComments

Автор draff

Ответов: 7
Просмотров: 1691
Последний ответ 16.09.2021, 21:35:48
от draff
Модуль JComments Latest - фильтрация по id

Автор Kelman

Ответов: 0
Просмотров: 846
Последний ответ 21.02.2021, 22:18:17
от Kelman
Как добавить JComments в модуль?

Автор korkka44

Ответов: 14
Просмотров: 2683
Последний ответ 07.10.2017, 15:01:20
от voland