注册检查电子邮件是否存在而不检查数

时间:2015-04-17 12:07:29

标签: javascript php performance algorithm registration

考虑我想用Javascript(例如Angular)制作一个多步注册表单,并且在完成所有步骤之前我不想做一些ajax。 我认为可能在Javascript中执行一个函数,该函数将用户电子邮件作为参数来确定电子邮件是否存在于数据库中。 但实际上我不希望我的函数做Ajax调用。 考虑每次用户在数据库中注册时,应该更新此算法。

这有点难以说,但我的意思是应该有一个算法来确定一个项目是否存在而没有项目。 (我知道这看起来有点傻。但事实上并非如此。)

您从数据库中获取所有项目一次,并且知道您编写的所有项目,该算法在不知道数据库项目的情况下确定给定项目是否存在于数据库中。

考虑登录过程系统可以在不知道用户密码的情况下确定用户密码是否正确。系统只知道关于用户密码的一些事情(哈希或md5或......)

所以我们可以在现有的用户表上执行一个函数,并获取一些值和字符串或......并且使用这些值,我们可以检测用户电子邮件是否已经存在于数据库中而不知道所有项目。

我提出问题的原因之一是性能问题(考虑用户表有这么多记录。),第二个原因只是想要看看:)

2 个答案:

答案 0 :(得分:1)

从电子邮件地址生成哈希。假设散列是一个20位的值(例如,只取md5散列的底部20位)。这意味着你需要一个128K字节的表,其中每个位是0或1,具体取决于是否有一个散列到该值的电子邮件。您可以通过生成哈希并在表格中查找来轻松检查电子邮件。 1表示使用电子邮件或存在哈希冲突。 0确保在生成表时未使用电子邮件。要减少冲突的可能性,请确保表中的位数远大于用户数。 20位提供100万个散列桶。

答案 1 :(得分:0)

因此,对于每个请求,您将构建一个包含整个数据集的自定义响应脚本,并将其发送回客户端进行检查?如果您不检查从客户端发回的电子邮件地址以及需要散列数据以防止泄露,请忽略完整性问题,这不会很好地扩展。它可以很快地用10s甚至100行,但它不会工作成千上万行。

相关问题