предистория
на сайте появилось два пользователя с абсолютно одинаковыми никнеймами. один из них стал оставлять комментарии, а второго засыпали вопросами по поводу этих комментариев. пошла путаница, пока не выяснилось, что это 2 разных пользователя с одинаковыми никнеймами на сайте. да и вообще не удобно, будет к примеру какое нибудь обсуждение, и мне скажут — "а вон обратись к васе, он шарит." а к какому именно васе ??? если их у меня будет 20 на сайте, поэтому поднял вопрос об уникальности никнейма на форуме, где меня тыкнули носов в тему для версии 1.5-1.6. принцип не изменился, но во первых там немного поменялись файлы, во вторых там есть некоторый недочёт, при котором я не могу сменить что либо в профиле если не поменяю хотяб один символ в своём никнейме и плюс если я админ — я не могу изменить профиль, не поменяв при этом никнейма пользователя.
и так приступаем
проверка происходит
* при регистрации
* при редактировании профиля
то есть если никнейм занят — выводится сообщение что он занят
первое — открываем /components/registration/js/check.js Вставляем в самом конце
второе — в файле /templates/ваш_шаблон/components/com_registration.tpl
(в 1.9 именно такие строки)
меняем натретий шаг — в файле /core/ajax/registration.php перед добавить следующий код
с регистрацией разобрались
переходим к редактированию в профиле
в файле /components/users/frontend.php в разделе // EDIT PROFILE //
находим строку
и вставляем после неё
затем в файле /languages/ru/components/users.php после
добавляем строку
на этом всё.
при редактировании в профиле профиксено, что если вы не изменили свой ник и он остался прежним, а изменили какие либо данные профиля, данные сохраняются, если вы админ, то у вас не происходит проверка на уникальность ника, и вы можете написать любой ник незапретный на сайте — были траблы при редактировании чужого профиля админом, ничего не нашёл, как только отключить проверку на уникальность админам
на сайте появилось два пользователя с абсолютно одинаковыми никнеймами. один из них стал оставлять комментарии, а второго засыпали вопросами по поводу этих комментариев. пошла путаница, пока не выяснилось, что это 2 разных пользователя с одинаковыми никнеймами на сайте. да и вообще не удобно, будет к примеру какое нибудь обсуждение, и мне скажут — "а вон обратись к васе, он шарит." а к какому именно васе ??? если их у меня будет 20 на сайте, поэтому поднял вопрос об уникальности никнейма на форуме, где меня тыкнули носов в тему для версии 1.5-1.6. принцип не изменился, но во первых там немного поменялись файлы, во вторых там есть некоторый недочёт, при котором я не могу сменить что либо в профиле если не поменяю хотяб один символ в своём никнейме и плюс если я админ — я не могу изменить профиль, не поменяв при этом никнейма пользователя.
и так приступаем
проверка происходит
* при регистрации
* при редактировании профиля
то есть если никнейм занят — выводится сообщение что он занят
первое — открываем /components/registration/js/check.js Вставляем в самом конце
// Проверка никнейма на корректность (русские и латинские буквы, длина) и уникальность. function checkNickname() { var nickname = $("#nickinput").attr('value'); var reg= /^[a-zA-Zа-яА-Я0-9_\-\.\"\ \@\*\si]{2,15}$/ ; if (reg.test(nickname)) { $("#nicknamecheck").load("/core/ajax/registration.php", {opt: "checknickname", data:nickname}); } else { if (nickname.length < 2){ $("#nicknamecheck").html('<span style="color:red">Минимальная длина = 2</span>'); } else { if (userlogin.length > 15){ $("#nicknamecheck").html('<span style="color:red">Максимальная длина = 15</span>'); } else { $("#nicknamecheck").html('<span style="color:red">Только латинские буквы и цифры</span>'); } } } }
(в 1.9 именно такие строки)
<td valign="top" class=""> <input name="nickname" id="nickinput" class="text-input" type="text" size="30" value="{$nickname|escape:'html'}" /> <span class="regstar">*</span> </td>
<td valign="top" class=""> <input name="nickname" id="nickinput" class="text-input" type="text" size="30" value="{$nickname|escape:'html'}" onchange="checkNickname()" autocomplete="off" /> <span class="regstar">*</span> <div id="nicknamecheck"></div> </td>
return;
// Проверка никнейма на уникальность (русский текст с кодировкой в БД 1251) if ($opt=='checknickname') { $sql = "SELECT id, nickname FROM cms_users WHERE (nickname LIKE '".iconv('UTF-8', 'Windows-1251', $data)."') AND (is_deleted = 0) LIMIT 1"; $result = $inDB->query($sql); if($inDB->num_rows($result)==0){ echo '<span style="color:green">Вы можете использовать этот никнейм</span>'; } else { echo '<span style="color:red">Выбранный никнейм занят!</span>'; } }
переходим к редактированию в профиле
в файле /components/users/frontend.php в разделе // EDIT PROFILE //
находим строку
$nickname = $inCore->request('nickname', 'str'); if (strlen($nickname)<2) { cmsCore::addSessionMessage($_LANG['SHORT_NICKNAME'], 'error'); $errors = true; }
// Здесь вставим проверку на уникальность никнейма $sqlnik = "SELECT id, nickname FROM cms_users WHERE (nickname LIKE '$nickname') AND (is_deleted = 0) and (id != '$inUser->id') LIMIT 1"; $resultnik = $inDB->query($sqlnik); if (!$inUser->is_admin) {if($inDB->num_rows($resultnik)!=0) { cmsCore::addSessionMessage($_LANG['ZANYAT_NICKNAME'], 'error'); $errors = true; } } // Блок проверки уникальности никнейма закончен
$_LANG['PROFILE_SAVED'] ='Профиль успешно сохранен.';
$_LANG['ZANYAT_NICKNAME'] ='Введённый никнейм занят.';
при редактировании в профиле профиксено, что если вы не изменили свой ник и он остался прежним, а изменили какие либо данные профиля, данные сохраняются, если вы админ, то у вас не происходит проверка на уникальность ника, и вы можете написать любой ник незапретный на сайте — были траблы при редактировании чужого профиля админом, ничего не нашёл, как только отключить проверку на уникальность админам
Реклама #
bondar 12 лет назад #
Sergey Platonov 12 лет назад #
а где именно стоит запрет - это есть в функциях 1.7 ??? или установлен хак
bondar 12 лет назад #
http://instantcms.ru/forum/thread2173.html
Lexa219 12 лет назад #
Zau4man 12 лет назад #
На моих двух проектах очень пригодится!
Роман 12 лет назад #
Sergey Platonov 12 лет назад #
santi 12 лет назад #
balooo 12 лет назад #
Sergey Platonov 12 лет назад #
balooo 12 лет назад #
Sergey Platonov 12 лет назад #
WALTERZ 12 лет назад #
Zau4man 12 лет назад #
Легко регаю другой логин, но с таким же ником...
Zau4man 12 лет назад #
добавить в регулярное выражение var reg= /^[a-zA-Zа-яА-Я0-9_]{2,15}$/ ; пробел, знак собачки, тире...
Sergey Platonov 12 лет назад #
нужно заменить на
moHAX 12 лет назад #
Katerina 12 лет назад #
Так что в релиз включать не стоит, а вот за Хак, в любом случае, спасибо большое.
moHAX 12 лет назад #
Sergey Platonov 12 лет назад #
Sergey Platonov 12 лет назад #
NickSolver 12 лет назад #
Санечек 12 лет назад #
Sergey Platonov 12 лет назад #
Санечек 12 лет назад #
Sergey Platonov 12 лет назад #
Санечек 12 лет назад #
Sergey Platonov 12 лет назад #
Санечек 12 лет назад #
Sergey Platonov 12 лет назад #
ps - если щас быстрым взглядом не смогу сказать что - более подробно смогу посмотреть часа через 3-4.
Санечек 12 лет назад #
Май 11 лет назад #
Eesti 10 лет назад #