Перейти к контенту

"Затычка крикунам", или "антикапслок"


Рекомендуемые сообщения

Надоели деятели с зажатым капслоком.

Сделал простенькую заглушку на джаваскрипт. Обойти ее не сложно, но всё же большую часть юзеров это заставит не перебарщивать с заглавными буквами.

 

skin_post.php и skin_topic.php

После кода:

	function ValidateForm(isMsg) {
	MessageLength  = document.REPLIER.Post.value.length;
	errors = "";

добавил:

anticapskey=0
for(i=0;i<MessageLength;i++){
if(document.REPLIER.Post.value.substring(i,i+1).toLowerCase()!=document.REPLIER.Post.value.substring(i,i+1))anticapskey++
}
if(MessageLength/anticapskey<3)errors = "В сообщении слишком много заглавных букв!"

Тепрь если в сообщении больше чем 1/3 букв заглавные, джава-скрипт ругается и не дает отправить сообщение.

Ссылка на комментарий
Поделиться на других сайтах

  • 6 месяцев спустя...

Джаваскрипт - он на любой версии форума джаваскрипт.

 

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

MessageLength  = document.REPLIER.Post.value.length;
	errors = "";
anticaps=document.REPLIER.Post.value.split(/[А-ЯA-Z]/).join('')
anticapskey=anticaps.length
if((MessageLength/anticapskey)>1.3)errors = "В сообщении слишком много заглавных букв!"

Ссылка на комментарий
Поделиться на других сайтах

Джаваскрипт - он на любой версии форума джаваскрипт.

Это бесспорно, только непонятно, куда там это вставлять :D. В skin_topic.php вобще нет кода, после которого надо вставлять, а вставка только в skin_post.php не дает результата... И то, эти файлы из скин кэша, а его вроде бессмысленно редактировать.

Через редактирование скинов через админку тоже пробовал. То, после чего надо вставлять, есть в Post Screen/get_javascript. Пробовал туда вписать - не работает тоже.

Ссылка на комментарий
Поделиться на других сайтах

или я че-то не понял, как работает split

Конструкция сплит.джоин здесь работает аналогично пхп-шной str_replace/preg_replace.

Я сделал удаление всех заглавных букв и определение длинны строки. Если строка с заглавными больше строки с вырезанными заглавными в 1.3 раза - эррормесседж.

Таким образом я оставил для себя лазейку: в конец можно набабахать немеряно пробелов :D

Ссылка на комментарий
Поделиться на других сайтах

не понял логики

рассмотрим частный случай

заглавных букв нет

длина строки - MessageLength=6 (превед)

длина заглавных букв - anticapskey=0 ()

6/0=бесконечность >> 1.3

сработает ошибка

так?

 

а, теперь понял

strlen('ПреВед')/strlen('реед')

все ок

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.