[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как запретить определенные слова
AtonS
Есть форма в которую пользователь вводит сообщение. Как запретить вводить в форму определенные слова и символы например Admin, Администратор, ; , .,
-, _ , + и т.п
Если использовать if то получится длинная конструкция
if ($author == "Админ" || $author == "админ" || $author == "аДмин" || ......)
{
exit();
}



Спустя 1 час, 32 минуты, 18 секунд (12.02.2009 - 20:52) LoneCat написал(а):
Если нужно сравнить несколько значений подряд - есть конструкция switch() {}, а-ля
PHP
switch($author) {
  case 
'admin':
  case 
'админ':
    
// Какая-либо реакция на это условие
    
break;
  case 
'user':
  case 
'юзверь':
    
// Какая-либо другая реакция
    
break;
  default:
    
// Действие по-умолчанию, если ни одно из условий, перечисленных выше, не совпало
    
break;
}


Можно загнать все определенные слова в массив, объявив его в начале, а потом сравнивая значения с ним, а-ля:

PHP
$words = array('Админ''админ''Admin''admin');
if(
in_array($author$words)) {
  
// Слово найдено в массиве
}


Можно вынести список слов в отдельный файл, дабы не лезть в код чтобы его изменить, например сохранить список слов в words.txt, по одному слову на строке, тогда массив слов можно получить через file(), иже:

PHP
$words file('words.txt'FILE_IGNORE_NEW_LINES);
if(
in_array($author$words)) {
  
// Слово найдено в массиве из файла
}


Ну и т.п. частные случаи реализации, слова можно хранить в БД, грузить их из сетевого источника и т.д и т.п. smile.gif

Спустя 13 минут, 6 секунд (12.02.2009 - 21:05) AtonS написал(а):
Спасибо. А вообще возможно как нибудь это записать так чтобы если введут слово адмИн или аДмин ... ну короче чтобы регистр сразу учитывался.
Или придется все равно прописывать каждый вариант?

Спустя 18 минут, 11 секунд (12.02.2009 - 21:23) LoneCat написал(а):
strtolower() переведёт все буквы строки в нижний регистр
strtoupper() в верхний
иже вместо
PHP
if(in_array($author$words)) {

можно написать:
PHP
if(in_array(strtolower($author), $words)) {

но тогда все слова в базе соот-но должны быть в нижнем регистре.

Спустя 7 минут, 32 секунды (12.02.2009 - 21:31) AtonS написал(а):
Еще раз спасибо всем. Сейчас попробую.

А как символы запретить вводить такие как & ? ; , .

Отвечу сам на свой вопрос biggrin.gif

if(preg_match('<\W>', $author))
{
exit ("Нашлись символы...");
}

Спустя 9 дней, 12 часов, 38 минут, 55 секунд (22.02.2009 - 10:10) Pinoplast написал(а):
Вродебы это описываетьсяв регулярныхвыражениях

Спустя 6 часов, 1 секунда (22.02.2009 - 16:10) stepan написал(а):
blink.gif ни туда blink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.