Сегодня: 17:12:2025 Доброго вам вечера!

I live ExBB and CMS Limbo!  I live ExBB and CMS Limbo!
Логин :
Пароль :
Регистрация?  Забыли пароль? 
 

Страниц (117): В начало « ... 35 36 37 38 [39] 40 41 42 43 ... » В конец

> Найдено сообщений: 1165
NordWest Отправлено: 12 апреля 2017 — 18:12 • Тема: Перевод ExBB на UTF-8 • Форум: ExBB Community

Ответов: 0
Просмотров: 1148
Если вдруг когда-нибудь озадачусь этой проблемой (что вообще говоря вряд ли), то на всякий случай решил для самого себя сохранить информацию, какие функции в движке вероятно придётся подменить...

mail() --> mb_send_mail()
strlen() --> mb_strlen()
strpos() --> mb_strpos()
strrpos() --> mb_strrpos()
substr() --> mb_substr()
ereg() --> mb_ereg()
eregi() --> mb_eregi()
ereg_replace() --> mb_ereg_replace()
eregi_replace() --> mb_eregi_replace()
split() --> mb_split()
NordWest Отправлено: 12 апреля 2017 — 18:06 • Тема: Новости дня • Форум: Всё подряд

Ответов: 276
Просмотров: 91225
Свой собственный хостинг для форума развернул, что бы не платить за хостинг в интернете.
 Цитата:
Хостинг (англ. hosting) — услуга по предоставлению ресурсов для размещения информации на сервере, постоянно находящемся в сети (обычно Интернет).

Обычно хостинг входит в пакет по обслуживанию сайта и подразумевает как минимум услугу размещения файлов сайта на сервере, на котором запущено ПО, необходимое для обработки запросов к этим файлам (веб-сервер). Как правило, в обслуживание уже входит предоставление места для почтовой корреспонденции, баз данных, DNS, файлового хранилища на специально выделенном файл-сервере и т. п., а также поддержка функционирования соответствующих сервисов.

У меня раньше бесплатный хостинг был вместе с тарифным планом от старого провайдера. Потом я провайдера сменил и спустя некоторое время они мне хостинг отключили. Алина за хостинг "Беседки" платит почти 2 тысячи в год - недавно скидывались. Бесплатные хостинги есть - но там невозможно работать, тормоза жуткие.

Ну и параллельно у меня там развернут медиа-сервер (киношки на телевизор гоняю), торент клиент и вообще большая файлопомойка. Улыбка
NordWest Отправлено: 12 апреля 2017 — 14:53 • Тема: Проблема с скрытыми разделами • Форум: ExBB Community

Ответов: 1
Просмотров: 1215

Инструкция для дистрибутива ExBB_FM_1.0_Final
Устраняет проблемы с видимостью некоторых ссылок на скрытые форумы.


Открываем файл index.php
в котором ищем строку
code:
$LastPosterName = ($forum['last_poster_id'] !== 0) ? $fm->LANG['Author'].': <a href="profile.php?action=show&member='.$forum['last_poster_id'].'">'.$forum['last_poster'].'</a>' : $fm->LANG['Author'].': '.$fm->LANG['Guest'];

после которой вставляем
code:
if (!isset($allforums[$id])) // если последние изменения пришлись на скрытый подфорум - формируем новые данные
{
$ftopics = $fm->_Read('forum'.$id.'/list.php');
usort($ftopics,"sort_by_postdate");
$topic = $ftopics[0];
$thread_keys = array_keys($fm->_Read('data/forum'.$forum['id'].'/'.$topic['id'].'-thd.php'));
$lt_name = (strlen($topic['name'])>36) ? substr($topic['name'],0,35).'...' : $topic['name'];
$LastTopicName = '<img src="./templates/'.DEF_SKIN.'/im/lastpost.gif"><span'.($fm->exbb['show_hints'] ? '<span class="hint">' : '').'><a href="topic.php?forum='.$topic['fid'].'&topic='.$topic['id'].'&v=l#'.end($thread_keys).'" title="'.$topic['name'].'">'.$lt_name.'</a></span>';
$LastPosterName = ($topic['a_id'] !== 0) ? $fm->LANG['Author'].': <a href="profile.php?action=show&member='.$topic['a_id'].'">'.$topic['author'].'</a>' : $fm->LANG['Author'].': '.$fm->LANG['Guest'];
$LastTopicDate = ($topic['postdate'] > 0) ? date("d.m.Y - H:i", $topic['postdate'] + $fm->user['timedif']*3600) : $fm->LANG['NA'];
}


Далее открываем файл profile.php
в котором ищем строку
code:
$allforums = $fm->_Read(FM_ALLFORUMS);

которую заменяем на строку
code:
$allforums = array_filter($fm->_Read(FM_ALLFORUMS),"Filter_Cat");


затем далее в этом же файле ищем код
code:
if (isset($user['lastpost']['date'])) {
$postdate = $fm->_DateFormat($user['lastpost']['date'] + $fm->user['timedif']['usertime']*3600);
$topicTitle = preg_replace("#([^\s]{32})(.+)#is","$1&shy;$2",$user['lastpost']['name']);
$lastpostdetails = $fm->LANG['LastPost'].': <a href="'.$user['lastpost']['link'].'">'.$topicTitle.'</a> - '.$postdate;
} else {
$lastpostdetails = $fm->LANG['NoPosts'];
}

который заменяем кодом
code:
if (isset($user['last_visit'])) // время последней активности
{$lastvisit = $fm->LANG['LastVisit'].': '.$fm->_DateFormat($user['last_visit'] + $fm->user['timedif']*3600);}
else {$lastvisit = $fm->LANG['NoVisit'];}


затем далее в этом же файле ищем код
code:
$fm->_BOARDSTATS();
$days_reged = max(1, round((time() - $user['joined'])/86400));
$posts_per_day = sprintf($fm->LANG['PostsPerDay'], $user['posts']/$days_reged);
$percentage = ($fm->_Stats['totalposts'] > 0) ? min(100, ($user['posts'] / $fm->_Stats['totalposts']) * 100) : 0;
$percentage = sprintf($fm->LANG['ProcTotal'], $percentage);


который удаляем

затем далее в этом же файле ищем строку
code:
$countposts = array_sum($user['posted']);

которую заменяем на код
code:
foreach ($user['posted'] as $inforum=>$posts)
{
if (isset($allforums[$inforum]))
{
$infposts[$inforum] = $posts;
$countposts += $posts;
}
}


затем далее в этом же файле ищем строку
code:
foreach ($user['posted'] as $inforum=>$posts){


которую заменяем на строку
code:
foreach ($infposts as $inforum=>$posts){


затем далее в этом же файле ищем строку
code:
$fm->_Title = ' :: '.$fm->LANG['UserInfo'];

перед которой вставляем код
code:
$fm->_BOARDSTATS();
$days_reged = max(1, round((time() - $user['joined'])/86400));
$posts_per_day = sprintf($fm->LANG['PostsPerDay'], $countposts/$days_reged);
$percentage = ($fm->_Stats['totalposts'] > 0) ? min(100, ($countposts / $fm->_Stats['totalposts']) * 100) : 0;
$percentage = sprintf($fm->LANG['ProcTotal'], $percentage);
$usertotalposts = $countposts.' ['.$percentage.' / '.$posts_per_day.']';


затем далее в этом же файле ищем строку
code:
function validate_items(){

перед которой вставляем код
code:
function Filter_Cat($var) {
global $fm;
$_access = TRUE;
if (!defined('IS_ADMIN') && $var['private'] === TRUE) {
$_access = (isset($fm->user['private'][$var['id']]) && $fm->user['private'][$var['id']] === TRUE) ? TRUE:FALSE;
}
return ($_access === TRUE) ?1:0;
}


Далее открываем файл lang_front_register.php
в котором ищем строки
code:
$this->LANG['LastPost'] = 'Последняя запись';
$this->LANG['NoPosts'] = 'Нет записей';

которые заменяем строками
code:
$this->LANG['Activity'] = 'Активность';
$this->LANG['LastVisit'] = 'Последнее посещение';
$this->LANG['NoVisit'] = 'Нет информации';


Затем открываем в своем шаблоне файл profile_show.tpl
в котором ищем строки
code:
<tr>
<td class="pformleft" valign="top"><b>{$fm->LANG['Updates']}</b></td>
<td class="pformright">$lastpostdetails</td>
</tr>
<tr>
<td class="pformleft" valign="top"><b>{$fm->LANG['UserTotalPosts']}</b></td>
<td class="pformright">{$user['posts']} [$percentage / $posts_per_day]</td>
</tr>

которые заменяем строками
code:
<tr>
<td class="pformleft" valign="top"><b>{$fm->LANG['Activity']}</b></td>
<td class="pformright">$lastvisit</td>
</tr>
<tr>
<td class="pformleft" valign="top"><b>{$fm->LANG['UserTotalPosts']}</b></td>
<td class="pformright">$usertotalposts</td>
</tr>


На этом устранение проблемы завершено.
NordWest Отправлено: 10 апреля 2017 — 21:22 • Тема: Новости дня • Форум: Всё подряд

Ответов: 276
Просмотров: 91225
Я вот думаю, не подкинь я ей тогда эту мысль - может и по сей день нормально бы всё было? Огорчение
NordWest Отправлено: 10 апреля 2017 — 10:57 • Тема: Новости дня • Форум: Всё подряд

Ответов: 276
Просмотров: 91225
Не страшно, когда рядом есть кому в случае чего поддержать. Прорвёмся. Улыбка
NordWest Отправлено: 9 апреля 2017 — 22:15 • Тема: Новости дня • Форум: Всё подряд

Ответов: 276
Просмотров: 91225
Надежда сегодня ответила. Говорит в новый отдел перешла - работой загрузилась по самое нехочу. Ну и слава богу. Улыбка

topinant , Надя у вас просит прощения, что погорячилась в ответ на ваше поздравление с 8 марта - была на взводе.
NordWest Отправлено: 9 апреля 2017 — 13:09 • Тема: Проблема с скрытыми разделами • Форум: ExBB Community

Ответов: 1
Просмотров: 1215
Пытаюсь решить проблему такого плана.
В нескольких местах форум выдает ссылки на скрытые разделы пользователям, которые этой инфы видеть не должны.

В профиле...


На главной...
NordWest Отправлено: 9 апреля 2017 — 11:42 • Тема: Новости дня • Форум: Всё подряд

Ответов: 276
Просмотров: 91225
Написал недавно на почту Надежде - молчит. Не случилось бы чего. Огорчение
NordWest Отправлено: 3 апреля 2017 — 02:01 • Тема: Новости дня • Форум: Всё подряд

Ответов: 276
Просмотров: 91225
Ну всё, вроде закончил ковыряться с железом - запустил таки я себе полноценный сервер.

По нынешним меркам уже устаревшая модель, но главное, что шасси серверное со всякими отказозащищающими штуками. Улыбка
NordWest Отправлено: 23 марта 2017 — 22:26 • Тема: WebParser: использование StringIndex2 • Форум: Rainmeter - изменяем интерфейс рабочего стола

Ответов: 1
Просмотров: 2651
Для эффективного использования плагина WebParser в целях получения повторяющихся данных из RSS-ленты или сайта погоды, следует использовать параметр StringIndex2 .

В мануале про этот параметр можно прочитать следующее:
StringIndex2
Этот параметр используется для RegExp параметра в Мере, использующую данные из другой Меры WebParser (т. е. URL-адрес указывает на родительскую меру). В этом случае StringIndex определяет индекс результата выражения родительской меры, а StringIndex2 определяет индекс RegExp выражения (т. е. определяет строку, возвращаемую меру).

Для примера давайте получим некоторые данные со страницы https://docs.rainmeter.net/

Исходный код этой страницы на момент написания данной статьи выглядел так:
Спойлер (Показать)

Код скина, который будем разбирать, выглядит так:
Спойлер (Показать)

В результате выполнения этого кода получаем такой результат.



Давайте теперь пошагово разберём, что делает этот код.

Во первых определены две переменные, причем одна из них используется в RegExp
PHP:
[Variables]
Url=https://docs.rainmeter.net
Item=.*<h2>(.*)</h2>

Затем в коде используется плагин WebParser для получения информации с сайта.

PHP:
[MeasureSite]
Measure=Plugin
Plugin=WebParser
Url=#Url#
RegExp="(?siU)<title>(.*)</title>#Item##Item##Item#.*"


В формировании параметра RegExp использована заранее объявленная переменная Item. Если эту переменную заменить её значением, то в итоге видим 4 точки захвата кода.
 Цитата:
RegExp="(?siU)<title>(.*)</title>.*<h2>(.*)</h2>.*<h2>(.*)</h2>.*<h2>(.*)</h2>.*"

Обратите внимание на одну особенность. Вместо того, что бы сразу разобрать весь сайт на многочисленные StringIndexes, мы только в первом StringIndexes сразу получаем результат, а вот в StringIndexes 2, 3 и 4 захватываем куски сырого кода между тегами <h2> и </h2>.
Вот этими кусками сырого кода мы в дальнейшем и займёмся.

PHP:
[MeasureItem1Title]
Measure=Plugin
Plugin=WebParser
Url=[MeasureSite]
DecodeCharacterReference = 1
RegExp="(?siU)">(.*)</a>"
StringIndex=2
StringIndex2=1

Мы видим, что снова используется плагин WebParser, но в качестве параметра Url используется указание на другую месуру MeasureSite
В этом случае параметр StringIndex определяет индекс куска кода, который следует взять из MeasureSite и уже к этому куску кода применяется свой RegExp
В результате этого может быть захвачено снова несколько элементов и уже на эти элементы ссылается другой параметр - StringIndex2

Применительно к конкретному примеру из MeasureSite будет взят кусок кода с индексом 2 (StringIndex=2) и после поиска будет выбран элемент с индексом 1 (StringIndex2=1).

Следующая месура работает аналогично, но имеет свой RegExp
PHP:
[MeasureItem1Link]
Measure=Plugin
Plugin=WebParser
Url=[MeasureSite]
RegExp="(?siU)<a (.*)">"
StringIndex=2
StringIndex2=1
Substitute='href="':"#Url#"

Аналогично повторим те же операции, но для StringIndex=3 и StringIndex=4

В общем можно дать совет использовать плагин WebParser именно по такой схеме.
Первая, главная месура делает запрос к сайту и захватывает максимально необходимое количество даных (зачастую это может быть вся страница сайта целиком). А затем создаются вспомогательные месуры, которые ссылаются на главную и разбирают её данные. Этим достигается минимум запросов к интернет ресурсу, т.к. при слишком частых запросах сервер может принять работу WebParser за атаку на ресурс. Так же использование подобной схемы позволяет обойти ограничение в 99 StringIndex для одной месуры.

Страниц (117): В начало « ... 35 36 37 38 [39] 40 41 42 43 ... » В конец

Powered by ExBB v1.1.180311