|
|
|
|
<?php
$result["user_name"] = "Name";
$user_name = "name"; //или = "nAme";
if(mb_strtolower($result["user_name"],'utf-8') == mb_strtolower($user_name,'utf-8'))
echo "равны";
else { echo "не равны";}
?>
|
Не пoлучается приравнять. Всегда не равны. Пробовал без mb_ то же самое. | |
|
|
|
|
|
|
|
для: vorobey
(26.10.2010 в 23:00)
| | Если вам не нужно учитывать регистр при сравнении, так переведите все сначала в нижний регистр - mb_strtolower(), а после уже сравнивайте. | |
|
|
|
|
|
|
|
для: Лена
(26.10.2010 в 23:44)
| | а что он по-вашему сделал? | |
|
|
|
|
|
|
|
для: vorobey
(26.10.2010 в 23:00)
| | специально проверил, ваш скрипт работает правильно
(равны) | |
|
|
|
|
|
|
|
для: psychomc
(26.10.2010 в 23:50)
| | Так точно работает. Ошибки там нет..просто из базы не вытягивался.
Вот тут и проблема. "не в курю" логику проверки login-а .
Цель: не должно быть имен типа 'Andrey' . 'anDreY'
можно так 'a n d r e y'
скрипт проверки логина
<?php
########
# LOGIN#
// проверка на пустоту
if (empty($user_name))
{
$err["error_login_empty"] = $lang_err["error_login_empty"];
unset($_SESSION["user_name"]);
}
else {
$_SESSION["user_name"] = $user_name;
//$user_name = mb_strtolower($user_name,'utf-8');
// проверка на корректность login
if(!name_check ($user_name)) $err["error_login"] = $lang_err["error_login"] ;
{
$sql = 'SELECT user_name
FROM '.users.'
WHERE user_name="'.mysql_real_escape_string($user_name).'" ' ;
$query = mysql_query($sql);
$result = mysql_fetch_assoc ($query);
echo "<b>".$result["user_name"]."</b>"; // проверка вытаскивается или нет
// проверка на существование пользователя. Имена приравниваем в нижний регистр, для сравнения mb_ 'utf-8'
if(mb_strtolower($result["user_name"],'utf-8') == mb_strtolower($user_name,'utf-8')) $err["error_name"] = $lang_err["error_name"];
else {
// проверка на колличество символов
if(mb_strlen($user_name,'utf-8') < 4 or mb_strlen($user_name,'utf-8') > 40) { $err["error_symbol"] = $lang_err["error_symbol"]; }
}
}
}
?>
|
не могу понять как сопоставить в имени поля 'user' логин если он с разным регистром, ведь если регистр имени не сопадает с именем записаном в таблице то тогда и запрос пустой приходит.
если знать что первая буде большая то это решаемо , а так я в потерянности.
ps тоесть имя 'Andrey' может быть, но только одно, безбукв разного регистра. | |
|
|
|
|
|
|
|
для: vorobey
(27.10.2010 в 00:44)
| | попробуйте использовать в запросе поиска пользователя LIKE %имя% например | |
|
|
|
|
|
|
|
для: psychomc
(27.10.2010 в 00:52)
| | Что это даст например? | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2010 в 08:14)
| | выборку совпадающих имен
автору:
вот так можно попробовать
SELECT text FROM table WHERE UPPER(name) LIKE UPPER('%'.mysql_real_escape_string($user_name).'%')
или так
SELECT * FROM table WHERE name LIKE '%'.mysql_real_escape_string($user_name).'%' COLLATE кодировка | |
|
|
|
|
|
|
|
для: psychomc
(27.10.2010 в 10:17)
| | >выборку совпадающих имен
да нифига подобного.
потому что, например, под имя Доли сервер спокойно вернет запись Кондолиза | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2010 в 10:36)
| | я надеюсь, что автор уже сам додумает как проставить % в запросе | |
|
|
|
|
|
|
|
для: psychomc
(27.10.2010 в 11:03)
| | > я надеюсь, что автор уже сам додумает как проставить % в запросе
Во первых, тогда уж их не проставлять нужно, а удалять.
Во вторых, операция LIKE (даже если закрыть глаза на возможное наличие процентов в самом имени) в этом вырожденном (без знаков маски) виде все равно не имет преимуществ перед прямым сравнением операндов. В отличие от недостатков. Вы уверены, что LIKE в полной мере воспользуется построенными индексами? Я вот чтобы да так нет.
В третьих, надежды, к сожалению, сбываются далеко не всегда.
Я вот надеюсь, что Вы перестанете выносить явную лажу сомнительные суждения в качестве советов...
А как-то бестолку. | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2010 в 11:14)
| | Ну тогда остается по буквенное сравнение. запросов тогда многовато получится. | |
|
|
|
|
|
|
|
для: vorobey
(27.10.2010 в 11:31)
| | SELECT *
FROM table1
WHERE name = 'andrey'
в итоговую выборку попадает
Andrey и anDreY
судя по всему то что вам надо
(utf8_general_ci) | |
|
|
|
|
|
|
|
для: psychomc
(27.10.2010 в 11:57)
| | вот это совсем другое дело. :) | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2010 в 12:02)
| | не было времени на тесты :) | |
|
|
|
|
|
|
|
для: psychomc
(27.10.2010 в 11:57)
| | да мне как раз и надо это, но в итоговую выборку не поподают имена если регистр разный.
У меня такой же sql (выше написал) . | |
|
|
|
|
|
|
|
для: vorobey
(27.10.2010 в 12:04)
| | какая кодировка у поля name? | |
|
|
|
|
|
|
|
для: psychomc
(27.10.2010 в 12:06)
| | блин. utf-8 bin
unicode - поставил все ок
Спасибо! капец какойто.
ps Везде ее проверял, а в юзерах на потом оставил... | |
|
|
|
|
|
|
|
для: vorobey
(27.10.2010 в 12:10)
| | бывает :)
пожалуйста | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2010 в 11:14)
| | это всяко лучше чем ничего.
p.s а где ваш совет? | |
|
|
|
|
|
|
|
для: psychomc
(27.10.2010 в 11:36)
| | >это всяко лучше чем ничего.
Вот с этим постулатом я и несогласен. Категоричеси.
Ошибочный ответ хуже его отсутствия. | |
|
|
|