на обсуждении Пожелания zxc

belomaxorka

Разработчик
Администратор
Еще одна идея по языкам. Допустим, если на сайт заходят помимо русскоязычных пользователей, немало англоязычных, то им русское оформление раздачи бесполезно (особенно если в релизе файлы исключительно на иностранном языке).

При оформлении раздачи я определяю какой язык раздачи установлен ( по name="msg[lang][]) и тогда подкидываю соответсвующие переменные.

Либо определяю какой язык преобладает в тексте с помощью

Please Login or Register to view hidden text.

А текст раздачи и её описание - переводите как-то на язык пользователя который зашёл? Или как?
 

sхс

Легенда
А текст раздачи и её описание - переводите как-то на язык пользователя который зашёл? Или как?
Если эта либа определяет, что большая часть текста description на русском, но при этом у раздачи Язык: Английский, то оставляю как есть на русском.
Если всё на забугорном, то подставляю языковые переменные на английском
 
Последнее редактирование:

belomaxorka

Разработчик
Администратор
Если эта либа определяет, что большая часть текста на русском, но при этом у раздачи Язык: Английский, то оставляю как есть на русском.
Если всё на забугорном, то подставляю языковые переменные на английском
А, вот оно как. Ну достаточно умно вы придумали) возьму на заметку.
 

sхс

Легенда
Ну это для гугла больше придумано. Если забугорный товарищ приходит из поиска за книгой, то русские кракозябры ну совсем ему ни к чему. Еще в SEO есть такая тема, что если в тексте присутсвуtn криллица, то у страницы меньше шансов попасть в англоязычную выдачу
 
Последнее редактирование:

sхс

Легенда
Продолжим тему языков :LOL:

tqR7hD4.jpeg


Делается это очень просто. Добавляется класс .selectpicker (нужно подключать jquery selectpicker js) в <select и меняется msg[lang] на msg[lang][]

Код:
<tr>
    <td><b>{L_LANG}</b> <sup><i class="fa fa-asterisk red" aria-hidden="true"></i></sup></td>
    <td colspan="2"><select required multiple="multiple" data-live-search="true" class="form-control selectpicker" name="msg[lang][]" title="{L_NOT_SELECTED}"><script type="text/javascript">document.writeln(make_format_list(lang));</script></select></td>
</tr>

includes/topic_templates/....php меняем на
Код:
$msg[$item] = (is_array(@$_POST['msg'][$item])) ? implode(', ',@$_POST['msg'][$item]) : @$_POST['msg'][$item];

Увы, старая ревизия, пути уже давно не те, кто не поймет - тот не поймет
 
Последнее редактирование:

sхс

Легенда
Немного про систему банов. Если мы забанили пользователя, что ему мешает зарегистрироваться снова?

usercp_register.php
после
$tp_data = array(); // данные для tpl
добавляем
PHP:
// НЕ ДАЕМ СНОВА РЕГИСТРИРОВАТЬСЯ ТЕМ, КТО ЗАБАНЕН

    $result = DB()->fetch_rowset("SELECT ban_userid FROM ". BB_BANLIST ." WHERE 1");

    if(!empty($result)){
        foreach($result AS $k=>$v){
            $ids[]=$v['ban_userid'];
        }

        if(!empty($ids)){
            $result = DB()->fetch_rowset("SELECT user_last_ip, user_reg_ip FROM ". BB_USERS ." WHERE user_id IN(".implode(',',$ids).")");


            foreach($result AS $k=>$v){
                $ips[]=$v['user_last_ip'];
                $ips[]=$v['user_reg_ip'];
            }

            if (in_array(USER_IP,array_unique($ips)) AND !IS_AM){

                message_die(GENERAL_ERROR, $lang['REGISTER_DISABLED'].
                    '<!--br><br>
                    <form method="post" action="/profile.php?mode=register" class="form-group" style="max-width:25%">
                        <div class="input-group input-group-sm">
                            <input class="post form-control" type="text" size="16" maxlength="25" name="invite" value="" placeholder="'.$lang['INVITE_CODE'].'">
                            <span class="input-group-btn">
                                <button type="submit" class="btn btn-default " title="Send">'.$lang['SUBMIT'].'</button>
                            </span>
                        </div>
                    </form-->');
            }
        }
    }

// НЕ ДАЕМ СНОВА РЕГИСТРИРОВАТЬСЯ ТЕМ, КТО ЗАБАНЕН
Этот код выдает забаненым, что регистрация временно недоступна.

Можно конечно банить последний ip пользователя вместе с его аккаунтом, но это неправильно. Сейчас у провайдеров дефицит айпишников и они сажают сотни, а то и тысячи юзеров на один айпи.

Как вариант, можно добавить условие: если айпи пользователя встречается единожды в базе всех пользователей, то запрещаем ему регистрацию.

Либо можно уже реализовать как отдельный мод с помощью

Please Login or Register to view hidden text.

- получаем набор параметров браузера пользователя + ip и формируем уникальный хэш из этого и так отлавиливаем мультиаккаунты кроном или в момент авторизации
 
Последнее редактирование:

belomaxorka

Разработчик
Администратор
Сейчас у провайдеров дефицит айпишников и они сажают сотни, а то и тысячи юзеров на один айпи.
Да, всё верно. Такая тенденция у провайдеров уже лет так 10, поэтому способ бана по айпи сразу отметаем.

Насчёт использования отпечатка браузера - как вариант, вполне хороший. Так можно и авторизацию в движке сделать, вполне эффективно будет.

Спасибо за идею!
 
Последнее редактирование:

sхс

Легенда
Отпечаток тоже не всегда идеален. Были случаи, когда владельцы одних и тех же айфонов на одном айпи жаловались на бан.
Есть еще вариант с библиотекой вечных кукис

Please Login or Register to view hidden text.

но к ним уже негативно относятся поисковики и adguard банит
 
Последнее редактирование:

sхс

Легенда
Обязательно переносите анонсер /announce.php на отдельный домен + абузоустойчивый хостинг. Сейчас копирастеры (особенно зарубежные) умеют отслеживать p2p трафик и шлют жалобы на автомате.

Варианты:
создать домен на своем сервере, скопировать на него папку /bt/ и в announce.php и scrape.php прописать строку
define('TR_ROOT', str_ireplace('bt-site.ru','site.ru',$_SERVER['DOCUMENT_ROOT']).'/bt/');

Тоже самое можно реализовать через /etc/fstab прописав относительные пути. Пример:
/var/www/site/data/www/site.ru/bt /var/www/site/data/www/site/bt-site.ru/bt none bind 0 0

Либо админы подскажите как это правильнее сделать
 
Сверху