Проверка строки, чтобы увидеть, существует ли конкретная группировка (PHP)? - PullRequest
1 голос
/ 10 августа 2009

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

На данный момент мой сценарий входа в систему проверяет наличие характеристик длины и определяет, существует ли он уже. Мой вопрос, как мне проверить, не входит ли игрок в определенную группу символов в нашем примере, группировка, которую я пытаюсь остановить, - «Администратор». Так что, если слово Admin когда-либо появляется, если оно (myAdminaccount, pizzaAdmin, GreatestAdmin). Мне интересно, использовал бы я какой-нибудь цикл для поиска по каждому имени пользователя за символом или это еще один более простой способ?

Спасибо вам всем за ваши предложения. Действительно, есть много способов решить эту ситуацию. Я надеюсь, что эта тема может стать хорошим справочным материалом для тех, кто решил использовать тип if check. Я проверяю их все и взвешиваю свои варианты, но я считаю, что нашел решение, которое лучше всего подходит для меня:)

Ответы [ 4 ]

1 голос
/ 10 августа 2009

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

Тест по PHP strpos () при проверке формы:

$badlist = Array(
  'admin',
  'staff',
  'official'
);

foreach($badlist as $badword){
  if (strpos(strtolower($_POST['username']), $badword)!==FALSE)
    die('fail');
}

Надеюсь, это поможет:)

1 голос
/ 10 августа 2009

Есть много способов сделать это. Я бы использовал stripos (без учета регистра):

$findme    = 'admin';
$mystring = 'This is a fake string';

$pos1 = stripos($mystring, $findme);

// Nope, 'admin' is not in $mystring
if ($pos1 === false) {
    echo "The string '$findme' was not found in the string '$mystring'";
}
1 голос
/ 10 августа 2009

Посмотрите на stristr для сравнения строк без учета регистра:

<?php
  $string = 'TehAdmin';
  if(stristr($string, 'admin') === FALSE) {
    echo '"admin" not found in string';
  } else {
    echo '"admin" found in string';
  }
  // outputs: "admin" found in string
?>

Для дополнительного развлечения вы можете использовать str_ireplace, чтобы заменить вхождения admin пустой строкой:

<?php
$string = str_ireplace("admin", "", $string);
?>

http://www.php.net/manual/en/function.str-ireplace.php

0 голосов
/ 10 августа 2009

хорошо, вы можете использовать одну из нескольких функций, чтобы определить, содержит ли одна строка другую, наиболее часто используются stristr () и preg_match ().

$input = 'Game_Admin';

if ( FALSE !== stristr( $input, 'admin' ) )
{
  // whatever
}

if ( preg_match( "/admin/i", $input ) )
{
  // whatever
}

Хотя я обеспокоен тем, что вы, похоже, назначаете роли пользователям на основе подстрок их имени пользователя. Это не отличный способ об этом. Лучше иметь роли и разрешения, определенные в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...