Проблема с плагином е107.

Тема в разделе "Как сделать...", создана пользователем disker, 23 ноя 2012.

  1. disker

    disker

    Регистр.:
    28 авг 2007
    Сообщения:
    550
    Симпатии:
    58
    Поставил на е107 плагин рейтинга сообщений на форуме

    и столкнулся с такой проблемой, что рейтинг можно накручивать сколько хочешь, если сидишь под обычным пользователем. Если зайти под админом , то проблемы нет. Может есть кто на форуме кто на е107 кодит и сталкивался с такой проблемой, а то я в php не силен и не могу понять где может быть ошибка. Если нужно могу скинуть код файлов плагина или сам плагин сюда. :thenks:

    UPD.: небольшое уточнение - методом тыка было обнаружено, что накручивать рейтинг могут только пользователи с никами кирилицей (то есть русские ники) . Если у пользователя ник латинскими символами, то накрутка невозможна. Покопался в плагине и есть подозрения, что проблема в том, что е107 не понимает русские ники (точнее плагин не понимает) , поскольку строка , которая отправляет данные голосования отправляет в таком виде :

    PHP:
    $user_rid preg_replace("/[^0-9a-zA-Z\.]/","",$q[4]);
    это один из 5-ти параметров, что пишется в базу при голосовании. Как видно передается только латиница. Как в эту строку добавить и кирилицу? Пробовал вот так :
    PHP:
    $user_rid preg_replace("/[^0-9a-zA-Zа-яА-Я\.]/","",$q[4]);
    но не помогает. Понимаю, что для кого-то вопрос покажется детским, но может кто подскажет куда копать ? :)

    P.s. ещё в файле голосования, в самом начале, дополнительно прописываю строку

    PHP:
    header('Content-type: text/html; charset=utf8');
    чтобы движок понимал кирилицу (на всякий случай), но и так не помогает :thenks:
     
  2. CNiks0N

    CNiks0N lamp.root

    Регистр.:
    28 ноя 2008
    Сообщения:
    230
    Симпатии:
    48
    С e107 не сталкивался, но по регуляркам попробуй вот так сделать:
    PHP:
     $user_rid preg_replace("/[^\S\.]/","",$q[4]); 
    либо добавь пораметр ius
    PHP:
     $user_rid preg_replace("/[^0-9a-zA-Zа-яА-Я\.]/ius","",$q[4]); 
     
  3. disker

    disker

    Регистр.:
    28 авг 2007
    Сообщения:
    550
    Симпатии:
    58
    первый вариант честно говоря боюсь использовать. Я так понимаю, что там будут передаваться все непробельные символы и вот не знаю как с безопасностью будет. Я и сам думал над таким вариантом. А второй что-то не могу найти что дает параметр ius , поэтому не могу разобраться. :(
     
  4. CNiks0N

    CNiks0N lamp.root

    Регистр.:
    28 ноя 2008
    Сообщения:
    230
    Симпатии:
    48
    Второй вариант указывает:
    i - игнорирование регистра
    s - игнорирование переносов строки
    u - utf
     
    disker нравится это.