Перейти к контенту
Секреты эффективного планирования логистических расходов для увеличения прибыли.

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


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

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

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

 

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 недели спустя...

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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