2015-04-17 2 views
0

Учтите, что я хочу сделать регистрационную форму с несколькими шагами с помощью Javascript (например, Angular), и я не хочу делать какой-либо ajax, прежде чем все шаги будут выполнены полностью. Я думал, что я могу выполнить функцию в Javascript, которая принимает электронную почту пользователя в качестве аргумента, определяющего, существует ли электронная почта в базе данных или нет. , но на самом деле я не хочу, чтобы моя функция выполняла вызов Ajax. Рассмотрите каждый раз, когда пользователь зарегистрирован в базе данных, этот алгоритм должен быть обновлен.проверка регистрации, если электронная почта существует без проверки базы данных

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

вы получаете все элементы из базы данных один раз и зная все элементы, вы пишете алгоритм, который определяет, существует ли данный элемент в базе данных или нет, без знания элементов базы данных.

система регистрации в системе может определить, является ли пароль пользователя правильным или нет, не зная пароль пользователя. система просто знает что-то о пароле пользователя (hash или md5 или ...)

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

одна из причин, по которой я задаю вопрос является проблемы производительности (рассмотрим таблицу пользователей с таким количеством записей.) И вторая причина, это просто быть фантазии :)

+2

Извлечение и хэширование всех ваших пользователей для проверки (если это возможно) будет хитом производительности, а не сканированием таблицы для проверки на существование. – Nadh

+0

Так что, в основном, вы хотите знать, существует ли в базе данных адрес электронной почты X без проверки БД? Не имеет смысла. Почему вы не хотите просто проверять БД? –

+0

@OfirBaruch да. точно хотите узнать, существует ли в базе данных адрес электронной почты X без проверки БД. рассмотрим, что у меня есть таблица пользователей с таким количеством записей, которые так долго требуют запроса в базу данных. и я думаю, что можно проверить, существует ли это письмо в базе данных без запроса к базе данных, но я не знаю, как это сделать. – mhndev

ответ

1

Генерация хэш с адреса электронной почты. Предположим, что хэш является 20-битным значением (например, возьмите нижние 20 бит хэша md5). Это означает, что вам нужна таблица размером 128 Кбайт, где каждый бит равен 0 или 1 в зависимости от того, есть ли письмо, которое хэширует это значение. Вы можете легко проверить наличие электронной почты, создавая хэш и просматривая его в таблице. A 1 означает, что либо используется электронное письмо, либо возникает хеш-столкновение. A 0 гарантирует, что электронная почта не использовалась во время создания таблицы. Чтобы уменьшить вероятность столкновения, убедитесь, что количество бит в таблице намного больше, чем количество пользователей. 20 бит дает 1 миллион хэш-ковшей.

0

Итак, для каждого запроса вы собираетесь создать настраиваемый скрипт ответа, охватывающий весь ваш набор данных, и отправить его обратно клиенту для проверки? Оставляя в стороне проблему целостности, если вы не проверяете адрес электронной почты, отправленный от клиента, и необходимость хэширования данных для предотвращения раскрытия информации, это не будет хорошо масштабироваться. Он будет работать очень быстро с 10 или даже 100 строк, но он не будет работать для 10-ти тысяч строк.

Смежные вопросы