|
|
|
| Рассказывать нечего.
puzzer и puzzeR получаются одинаковыми.(?)
mysql> select login,hashpsw from users where login="puzzeR";
;
+--------+------------+
| login | hashpsw |
+--------+------------+
| puzzer | puzzerpsw |
+--------+------------+
1 row in set
mysql>
|
Это можно исправить указанием типа столбца?, или это все, капец - бд не различает регистр и все.
---
Вижу такой выход:
echo "Пароль $data[0]<br>Логин $data[1]";
if (($data[0] != $passw)||($data[1] != $LOGIN)) {
//
//data0 - пароль из бд, data1 - логин из бд
//$passw - введенный пароль $LOGIN - вееденный логин
//
echo "Неправильный пароль или имя пользователя.";
exit;
}
|
ДОписываю: А если в бд будут пользователи puzzeR и puzzer ??? Как это решается? | |
|
|
|
|
|
|
|
для: root_xxx
(19.11.2014 в 01:34)
| | Разве puzzer и PuZZer являются разними словами? Буквы-то одни и те же, только с размером разница.
Первое, что приходит в голову - хэшировать строки. В этом случае регистр точно различается.
select login,hashpsw from users where MD5(`login`)=MD5("puzzeR)";
|
| |
|
|
|
|
|
|
|
для: Commander
(19.11.2014 в 08:57)
| | :) попробуйте залогиниться в unix с логином Root и с паролем от уч записи root .
Ваш вариант\подход понял. | |
|
|
|
|
|
|
|
для: root_xxx
(19.11.2014 в 12:24)
| | :) попробуйте залогиниться в unix с логином Root и с паролем от уч записи root .
Мой подход - человеческий, а ваш - компьютерный :) | |
|
|
|
|
|
|
|
для: root_xxx
(19.11.2014 в 01:34)
| | Сравнение строк зависит от типа collation.
Например, для utf8_general_ci - ci означает case insensitive (нечувствительный к регистру), соответственно приставка cs - case sensitive.
для utf8 можно использовать utf8_bin, которая тоже case sensitive.
Пример:
CREATE TABLE `t` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`ci` VARCHAR(50) NULL DEFAULT '0' COLLATE 'utf8_general_ci',
`cs` VARCHAR(50) NULL DEFAULT '0' COLLATE 'utf8_bin',
PRIMARY KEY (`id`)
)
ENGINE=InnoDB;
INSERT INTO t (ci, cs) VALUES ('puzzer', 'puzzer');
INSERT INTO t (ci, cs) VALUES ('puZZer', 'puZZer');
|
и запрос:
SELECT * FROM t WHERE t.ci = 'puzzer'
|
вернет обе записи, а запрос:
SELECT * FROM t WHERE t.cs = 'puzzer'
|
только первую
UPD:
еще можно использовать запросы вида:
SELECT * FROM t WHERE t.ci = 'puzzer' COLLATE utf8_bin;
|
| |
|
|
|
|
|
|
|
для: Igorek
(19.11.2014 в 09:22)
| | Сравнение строк зависит от типа collation.
Например, для utf8_general_ci - ci означает case insensitive (нечувствительный к регистру), соответственно приставка cs - case sensitive.
для utf8 можно использовать utf8_bin, которая тоже case sensitive.
дело в том что магической приставки CS в типах для сравнения нет. То есть в выпадающем списке ни в pma, ни в navicat нет utf8_general_cs. Незн может с коммандной строки можно указать utf8_general_cs ? или я не внимательно смотрел.
---
остальное понял и уже проверил. Буду использовать utf8_bin. | |
|
|
|
|
|
|
|
для: root_xxx
(19.11.2014 в 01:34)
| | .... WHERE BINARY login="puzzeR" | |
|
|
|
|
|
|
|
для: confirm
(19.11.2014 в 09:28)
| | Думаю что будет намного лучше если перевести некоторые поля в utf8_bin.
Ответ на мой вопрос был в самом вопросе, но я не знал (не догадался http://linux.org.ua/yabbfiles/Smilies/blush2.gif ) | |
|
|
|
|
|
|
|
для: root_xxx
(19.11.2014 в 13:07)
| | Так думаете?
Это совсем не обязательно, ибо основная нагрузка на это поле будет совсем не ы=Ы
PS. Ответ на ваш вопрос - саша и САША и Саша, это все таки одно имя, и иметь в системе один и тот же логин в различном регистре это плохо. | |
|
|
|
|
|
|
|
для: confirm
(19.11.2014 в 16:11)
| | иметь в системе один и тот же логин в различном регистре это плохо.
puzzer puZZer puzzeR это не один и тот же логин. Это три разных пользователя.
По поводу "один и тот же логин, но с разницей в регитстрах - плохо" - это я немножко понимаю. Будут проблемы при записи данных (непонятно будет куда писать данные - для puZZer или для puzzer). Ну а дублировать записи смысла никакого нет.
А какие проблемы будут если puzzer puZZer puzzeR - три разных логина (три разных пользователя)?
---
основная нагрузка на это поле будет совсем не ы=Ы
Что значит нагрузка и основная нагрузка? | |
|
|
|
|
|
|
|
для: root_xxx
(19.11.2014 в 18:09)
| | Ну если не имя для представления, значит и не важно, но ведь дублирование может быть и не логином, а именем на странице, тут тоже будете регистром отличать?
Есть у меня приход, каждому прихожанину на сокровенное отвечаю с подписью "Настоятель". Какой-то отрок зарегистрировался с представлением (не логином) "настоятель" и ответил сразу всем - "Все вы козлы". Вопрос - поймут ли прихожане, что это не я, а антихрист, и не поставят по мне поминальные свечи?
>Что значит нагрузка и основная нагрузка?
Вы опасаетесь, что не хватит символов для логина и фантазии, и ваш сайт уж точно будет по количеству пользователей как Фейсбук и регистрироваться/авторизоваться у вас будут пачками с интервалом 5 секунд? | |
|
|
|
|
|
|
|
для: confirm
(19.11.2014 в 18:36)
| | Понял! Но ведь пользователи также могут репетутать Алискин и Апискин.
Вы опасаетесь...
:) Я моделирую\предполагаю\алгоритмирую :) | |
|
|
|
|
|
|
|
для: root_xxx
(19.11.2014 в 19:51)
| | Можно перепутать, но все таки это разные персонажи. | |
|
|
|
|
|
|
|
для: confirm
(19.11.2014 в 19:55)
| | та я в том смысле, что это зависит от уровня внимательности\глупости пользователя.
Думаю, что эта тема закрыта. Пасиб усем. | |
|
|
|
|
|
|
|
для: root_xxx
(19.11.2014 в 01:34)
| |
что выдает? | |
|
|
|
|
|
|
|
для: Trianon
(19.11.2014 в 09:40)
| | НО это я уже поменял.
SHOW CREATE TABLE users;
+-------+------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------+
users | CREATE TABLE `users` (
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`login` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
БЫЛО `login` varchar(64) NOT NULL,
...
...
`mail` varchar(64) NOT NULL,
`us_status` int(2) unsigned NOT NULL,
...
...
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 |
+-------+------------------------------------------------------------------------------------+
1 row in set
mysql>
|
Еще будет пара вопросов по ключам и индексам. Но в новой теме. Но сначала хочу сам чуток разобраться. | |
|
|
|