Parapsixolog |
Отправлено: 22 сентября 2018 — 00:28
|
Advanced Member
Покинул форум
Сообщений всего: 487
Дата рег-ции: Сент. 2011
Репутация: 14
|
Flat , я сделал по вашей инструкции, кнопка появилась, но не работает.
1. Для зарегистрированных пользователей окно отправки e-mail открывается, но при попытке отправить сообщение движок пишет:
Notice: Undefined index: captcha in C:\OpenServer\domains\bacup\tools.php on line 194
Вот эти строки:
CODE:if ($fm->exbb['anti_bot'] && ($fm->input['captcha'] == '' || !isset($_SESSION['captcha']) || $fm->input['captcha'] !== $_SESSION['captcha']))
{
$fm->_Message($fm->LANG['Registration'],$fm->LANG['CaptchaError']);
И в окне сообщение:
Цитата:Регистрация
Не введен или введен неверный защитный код!
Для других пользователей отправка почты тоже не работает. Но если вернуть не правленый файл tools.php всё начинает работать опять.
2. А для гостей страница отправки e-mail вообще не открывается, пишет:
Цитата:Функция электронной почты отключена на форуме!
Я уже и все настройки пролез, но так и не нашел ни чего. Поиск по exbb тоже ни чего не дал.(Отредактировано автором: 22 сентября 2018 — 00:55) |
|
|
Flat |
Отправлено: 22 сентября 2018 — 09:33
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
Parapsixolog , - это моя недоработка - не протестил отправку письма, делал в попыхах. Посмотрел что форма работает и всё. Теперь всё решил.
1) Обязательно закинте, если не закинули ещё, строчки в LANG файл о чём я писал выше.
2) В папке templates/ваш_скин открываем файл mailform.tpl. Меняем всё что там находится на мой вариант, который я приводил выше. Затем, уже в изменённом файле ищем строку:
CODE:<input type="hidden" name="dosend" value="yes">
и после неё вставляем:
CODE:<input type="hidden" name="admin" value="1">
Затем находим строку:
CODE:if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0)
и меняем её на строку:
CODE:if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0 && isset($fm->input['admin']))
С этим файлом закончили.
3) Открываем первоначальный(не изменённый как выше) tools.php, и производим следующие изменения.
Находим строку:
CODE:if ($fm->user['id'] === 0) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['GuestMail']);
}
и меняем её на:
CODE:if ($fm->user['id'] === 0 && !isset($fm->input['admin'])) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['GuestMail']);
}
Находим строку:
CODE:$fm->input['subject'] = $fm->bads_filter(substr($fm->input['subject'],0,255));
$fm->input['message'] = $fm->bads_filter($fm->input['message']);
и после неё вставляем:
CODE:if (isset($fm->input['admin']) && $fm->user['id'] === 0 && $fm->exbb['anti_bot'] && ($fm->input['captcha'] == '' || !isset($_SESSION['captcha']) || $fm->input['captcha'] !== $_SESSION['captcha']))
{
$fm->_Message($fm->LANG['Registration'],$fm->LANG['CaptchaError']);
}
unset($_SESSION['captcha']);
это несколько изменённый предыдущий вариант.
Затем находим строку:
CODE:$fm->_Mail($fm->exbb['boardname'],$fm->user['mail'],$user['mail'],$fm->input['subject'],$email);
и меняем её на:
CODE:$fm->_Mail($fm->exbb['boardname'],
(!empty($fm->user['mail']))?$fm->user['mail']:'',$user['mail'],$fm->input['subject'],$email);
Вроде бы и всё. Я всё протестировал - письма отправляются. Никаких ошибок не появляется. Каптча для гостей выводится и проверяется(с фиксированной кнопки). Если ещё какой-либо косяк выявится, то пишите. Но вроде бы всё работает как часики. Может даже и у себя это оставлю)) |
|
|
Parapsixolog |
Отправлено: 22 сентября 2018 — 14:02
|
Advanced Member
Покинул форум
Сообщений всего: 487
Дата рег-ции: Сент. 2011
Репутация: 14
|
Flat , такой вот строки нет:
Flat пишет:Затем находим строку:
CODE:if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0)
Есть только:
CODE:if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0 && $fm->input['admin']===1)
Эту строку оставил неизменной, вроде бы оправляется сообщение.
Flat пишет:Parapsixolog пишет:
А для гостей страница отправки e-mail вообще не открывается, пишет:
Насчёт этого: у меня такого не вылазило. Если что проверьте включена ли эта функция в админке.
Естественно включена. Вошедшие же пользователи отправляют письма. И уведомления приходят.
Я почти разобрался в причинах не открытия окна. У меня стоит мод группа - http://exbb.info/community/topic...=54&topic=15 и для гостей отключена функция отправки почты.
Сейчас я включил, форма появилась (без каптчи), но при попытке отправить сообщение форум пишет:
Цитата:Гости форума не могут отправлять письма
В файле tools.php за отправку этого сообщения отвечает строка:
CODE:if ($fm->user['id'] === 0 && !isset($fm->input['admin'])) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['GuestMail']);
}
Если её тупо удалить, то отправка происходит. Но в этом случае гости могут отправить e-mail любому участнику форума, а это не хотелось бы. И капчи почему то нет. Без неё ящик спамом завалят.
Flat пишет:Странно почему не склеились эти мои 2 сообщения?
Потому что интервал склеивания менее 10 минут. |
|
|
Flat |
Отправлено: 23 сентября 2018 — 08:16
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
Parapsixolog пишет:такой вот строки нет:
Есть такая строка в том варианте файла mailform.tpl, который я приводил выше, а не в"чистом" файле движка. Вот в том моём варианте эта строка есть. Её находим и меняем. Я предупреждал:
Flat пишет:Меняем всё что там находится на мой вариант, который я приводил выше.
просто вы уже меняли в повторно изменённом файле вот и вышла неувязочка.
Так, чтобы больше не было разночтений приведу уже изменённый вариант этого файла:
CODE:<?php
echo <<<DATA
<br>
<div id="navstrip" align="left">
<img src="./templates/InvisionExBB/im/nav.gif" border="0" alt=">" /> <a href="index.php">{$fm->exbb['boardname']}</a> » {$fm->LANG['MailByBoard']}
</div>
<br>
<form method="post" action="tools.php">
<input type="hidden" name="action" value="mail">
<input type="hidden" name="dosend" value="yes">
<input type="hidden" name="admin" value="1">
<input type="hidden" name="member" value="{$user_id}">
<table cellspacing="1" cellpadding="4" border="0" align="center" class="tableborder" width="70%">
<tr>
<td class="maintitle" colspan="2"><img src="./templates/InvisionExBB/im/nav_m.gif" border="0" alt=">" width="8" height="8" /> {$fm->LANG['SendMailTo']} {$user['name']}</td>
</tr>
<tr>
<td class="pformleft" align="right"><b>{$fm->LANG['Topic']}</b></td>
<td class="pformright"><input type="text" name="subject" size="45" maxlength="100" tabindex="2" value="" /></td>
</tr>
<tr>
<td class="pformleft" align="right" valign="top"><b>{$fm->LANG['EmailMessage']}</b></td>
<td class="pformright"><textarea name="message" rows="15" cols="35" wrap="virtual" style="width:450px" tabindex="3"></textarea></td>
</tr>
DATA;
if($fm->exbb['anti_bot'] === TRUE && $fm->user['id'] === 0 && isset($fm->input['admin']))
{
echo <<<DATA
<tr>
<td class="pformleft"><b>{$fm->LANG['CaptchaCode']}</b><br /><span class="desc">{$fm->LANG['CaptchaBroken']}</span></td>
<td class="pformright"><img src="regimage.php" border="0" alt="captcha"></td>
</tr>
<tr>
<td class="pformleft"><b>{$fm->LANG['CaptchaСonfirm']}</b><br /><span class="desc">{$fm->LANG['CaptchaNote']}</span></td>
<td class="pformright"><input type="text" style="width: 130px" name="captcha" size="13" maxlength="10"></td>
</tr>
DATA;
}
echo <<<DATA
<tr>
<td class="darkrow2" align="center" colspan="2"><input type="submit" value="{$fm->LANG['Send']}" name="submit" /></td>
</tr>
</table>
</form>
DATA;
?>
Также приведу полностью код функции отправки сообщений из tools.php:
CODE:function mailtouser() {
global $fm;
if ($fm->exbb['emailfunctions'] !== TRUE) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['MailFunctionClosed']);
}
if ($fm->user['id'] === 0 && !isset($fm->input['admin'])) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['GuestMail']);
}
$users = $fm->_Read(FM_USERS);
if (($user_id = $fm->_Intval('member')) === 0 || !isset($users[$user_id])) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['CorrectPost']);
}
unset($users);
$user = $fm->_Getmember($user_id);
if ($fm->_Boolean($fm->input, 'dosend') === TRUE) {
if (!defined('IS_ADMIN')) {
if (isset($_SESSION['lastposttime']) && ($_SESSION['lastposttime'] + $fm->exbb['flood_limit']) > $fm->_Nowtime) {
$fm->_Message($fm->LANG['MainMsg'],sprintf($fm->LANG['FloodLimitNew'],$fm->exbb['flood_limit']));
}
$_SESSION['lastposttime'] = $fm->_Nowtime;
}
if ($fm->_String('subject') === '' || $fm->_String('message') === '') {
$fm->_Message($fm->LANG['MailByBoard'],$fm->LANG['NoEmptyFields']);
}
$fm->input['subject'] = $fm->bads_filter(substr($fm->input['subject'],0,255));
$fm->input['message'] = $fm->bads_filter($fm->input['message']);
if (isset($fm->input['admin']) && $fm->user['id'] === 0 && $fm->exbb['anti_bot'] && ($fm->input['captcha'] == '' || !isset($_SESSION['captcha']) || $fm->input['captcha'] !== $_SESSION['captcha']))
{
$fm->_Message($fm->LANG['Registration'],$fm->LANG['CaptchaError']);
}
unset($_SESSION['captcha']);
$email = sprintf($fm->LANG['EmailByBordText'],
$user['name'],
$fm->user['name'],
$fm->exbb['boardname'],
$fm->exbb['boardurl']).$fm->input['message'];
$fm->_Mail($fm->exbb['boardname'],
(!empty($fm->user['mail']))?$fm->user['mail']:'',$user['mail'],$fm->input['subject'],$email);
$fm->_Message($fm->LANG['MailByBoard'],$fm->LANG['SendMailOk'],'index.php');
} else {
$fm->_Title = ' :: '.$fm->LANG['MailByBoard'];
include('./templates/'.DEF_SKIN.'/all_header.tpl');
include('./templates/'.DEF_SKIN.'/logos.tpl');
include('./templates/'.DEF_SKIN.'/mailform.tpl');
include('./templates/'.DEF_SKIN.'/footer.tpl');
}
}
Parapsixolog пишет:Сейчас я включил, форма появилась (без каптчи)
Интересненько.. У меня каптча появляется и всё работает. Никаких предупреждений нет. Посмотрите-ка есть ли у вас файл regimage.php?
Всё ли вы сделали по инструкции? Ещё раз проверьте все шаги.
Может тот ваш мод вносит какие-то новые зависимости? Попробуйте поставить чистый exbb fm 1.0 rc1 и ввести изменения предложенные мной, должно всё работать.(Отредактировано автором: 23 сентября 2018 — 08:31) |
|
|
Parapsixolog |
Отправлено: 23 сентября 2018 — 12:55
|
Advanced Member
Покинул форум
Сообщений всего: 487
Дата рег-ции: Сент. 2011
Репутация: 14
|
Flat пишет:Parapsixolog пишет:
такой вот строки нет:
Есть такая строка в том варианте файла mailform.tpl, который я приводил выше, а не в"чистом" файле движка. Вот в том моём варианте эта строка есть. Её находим и меняем. Я предупреждал:
Flat пишет:
Меняем всё что там находится на мой вариант, который я приводил выше.
просто вы уже меняли в повторно изменённом файле вот и вышла неувязочка.
Flat, я всё делал по вашей инструкции. То есть сперва взял файл mailform.tpl http://exbb.info/community/topic...90855#1537290855
Затем опять по вашим инструкциям заменил некоторые строки mailform.tpl http://exbb.info/community/topic...18735#1537518735
Я же не знал, что нужно взять первоначальный вариант, без последней правки. Теперь то всё понятно.
Flat пишет:Интересненько.. У меня каптча появляется и всё работает. Никаких предупреждений нет. Посмотрите-ка есть ли у вас файл regimage.php?
Всё ли вы сделали по инструкции? Ещё раз проверьте все шаги.
Всё сделано по инструкции, это всё семечки. Я такие сложные моды устанавливал, что такие правки делаю с пол пинка.
Файл regimage.php есть конечно. Каптча прекрасно сейчас работает при регистрации.
Flat пишет:Может тот ваш мод вносит какие-то новые зависимости? Попробуйте поставить чистый exbb fm 1.0 rc1 и ввести изменения предложенные мной, должно всё работать.
Всё может быть. Кроме него у меня куча и других модов. Устанавливать предложенные вами изменения на чистый exbb fm 1.0 rc1 не вижу смысла. Даже если всё заработает как надо, мне то от этого легче не станет, от этого работать именно на моём движке не будет. |
|
|
Flat |
Отправлено: 28 сентября 2018 — 02:14
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
Parapsixolog пишет: я сейчас ещё раз сделал правки, и покрутил настройки в гостях мода группа. И вроде бы заработало это дополнение!
Очень за вас рад!
Parapsixolog пишет:На мой взгляд весьма нужное дополнение к любому сайту.
Да, нужное. Я кстати так и оставил это у себя, пусть будет.
Parapsixolog пишет:Стандартная кнопка не пойдёт.
Естественно. Вот тут есть из чего выбрать: https://yandex.ru/images/search?...2&source=wiz
Можно, конечно, свой дизайн сделать в какой-нибудь программе-редакторе графики, например в paint Net, но это требует усилий и времени. |
|
|
|