Forum Webscript.Ru
Программирование => PHP => Тема начата: Neter от 22 Июля 2002, 20:31:09
-
Вобщем у меня есть табтица ников в БД при регистрации.. воот.. и вопрос как избежать подмены ников допустим НИК и HИК.. Зрительно они одинаковы но БД их воспринимает как разные.. К!=K потому что одна из них русская а другая английская...
-
самый верный и дибильный способ ограничить ввод (т.е. только латиница)
а иначе это мало реально, имхо... больно много писанины, а выхлоп близок к нулю..
-
А может чё-нить готовое есть?
-
Neter
Ну напиши сам функцию, что-типа
function foo($nick) {
return strtr($nick, "aAcCkKMoOTxXBeEpP", "аАсСкКМоОТхХВеЕрР");
}
а потом по оригинальному значению и возвращенному функцией ищи в базе.
-
Кажись в димином чате была такая функция. Покопайся в коде, там даже комментарии есть :)
-
Макс, Если честно я не знаю Диму.. И тем более не знаю где лежит его чат :(
-
GotZfild, я чего-то не пойму.. Допустим чувак вводит Neter, то есть первая буква (e) английская а вторая русская.. это сработает?
-
Neter
Нет конечно.
У русской и английской е разные ASCII коды.
Так что совпадения не будет.
-
Хмм... тогда как? Запретить нахрен русские ники?
-
Так, народ, зацените фишку:
$str = "HiK";
$str2 = "НiK";
function foo($str){
$str = str_replace("а", "a", $str);
$str = str_replace("А", "A", $str);
$str = str_replace("В", "B", $str);
$str = str_replace("Е", "E", $str);
$str = str_replace("е", "e", $str);
$str = str_replace("У", "Y", $str);
$str = str_replace("у", "y", $str);
$str = str_replace("Р", "P", $str);
$str = str_replace("р", "p", $str);
$str = str_replace("О", "O", $str);
$str = str_replace("о", "o", $str);
$str = str_replace("С", "C", $str);
$str = str_replace("с", "c", $str);
$str = str_replace("Т", "T", $str);
$str = str_replace("М", "M", $str);
$str = str_replace("К", "K", $str);
$str = str_replace("Н", "H", $str);
return $str;
}
if (foo($str) == foo($str2)){
echo "Ники одинаковы!";
}
Незнаю правильно ли я сообразил...
И незнаю как это будет в плане быстродействия... Но эта операция в принцепе будет выполнятся только один раз при регистрации...
-
Neter
Да зпарети ты их в крайнем случае.
Зачем они?
-
if (preg_match("/[а-я]+/i",$nik)) {
echo "ты блин еще на арабском напиши";
}
но лучше яваскриптом проверить до сабмита формы...
-
Так, народ, зацените фишку:
PHP:
.....
Ну ты блин гонишь. Тебе же GotZfild тоже самое давно сказал, только бестрее использовать strtr, а не str_replace.
[OFF]Извини за грубость[/OFF]
А Димин чат это насколько я знаю на http://www.php.spb.ru
-
Всё, я понял.. GotZfild с меня бутылка пива.. Хотя.. Нет.. ящик, сенкс очень помог :)
-
Neter
Да плюнь ты на это. И в Димином чате, насколько я помню, этого не было. Там было перевод транслита на русский.
Если уж очень надо, то вот функция, которая возвращает массив с различными вариациями ника:
function foo($nick) {
$eng = "aAcCkKMoOTxXBeEpP";
$rus = "аАсСкКМоОТхХВеЕрР";
$nicks[0] = $nick;
for ($i = 0; $i < strlen($eng); $i++) {
$new_nick = str_replace($eng[$i], $rus[$i], $nick);
if ($new_nick != $nick) {
$nicks[] = $new_nick;
$nick = $new_nick;
}
}
return $nicks;
}
-
Ещё раз сенкс :)
-
GotZfild
И в Димином чате, насколько я помню, этого не было
в файле __other.php смотрел? ;)
Neter
Дима - это автор php.spb.ru а адрес чата - chat.php.spb.ru
-
Макс
Нашел. Так я же и написалнасколько я помню
Но все равно у него разрешено только
использовать либо только русские, либо только английские буквы (но не их комбинацию).
[OFF]Что-то сегодня форум уж очень активный[/OFF]
-
Что-то сегодня форум уж очень активный
[off]Ага. заняться видимо нечем[/off]
-
Covex
но лучше яваскриптом проверить до сабмита формы...
Нет, не лучше, может быть быстрее и меньше ресурсов требует, но на сервере всё равно проверять нужно. Думаю понятно, почему...
-
Ага. заняться видимо нечем
[OFF]У меня в Ростове дождь был слабый конечно, но всё же вот тоже каждый час-два просматриваю форум.[/OFF]
-
Люди, извините за офф топ.. просто не хочу на каждый глупый вопрос тему создавать...
Как загнать массив в таблицу(которая в mysql)?
Точнее мне надо сделать UPDATE тем полям знаначения которых совпадают со значенияи в массиве.. что-то типа
mysql_query("UPDATE users SET active = 1 WHERE user_id = 1");
Но для кучи user_id ...
-
mysql_query("UPDATE users SET active = 1 WHERE user_id IN (".implode(\',\',$array).")");
примерно так