Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用数据库中的电话号码或电子邮件地址进行注册?_Javascript_Html_Ajax_Database_Login - Fatal编程技术网

Javascript 如何使用数据库中的电话号码或电子邮件地址进行注册?

Javascript 如何使用数据库中的电话号码或电子邮件地址进行注册?,javascript,html,ajax,database,login,Javascript,Html,Ajax,Database,Login,我正在写一个需要注册的网络应用程序。我希望我的用户能够注册电子邮件地址或电话号码。然后他们可以使用电话号码、电子邮件地址或用户名登录,就像facebook、twitter、Instagram等 我的问题是如何在后端数据库中处理这个问题? 登录时如何处理?如何理解输入的值是电话号码还是电子邮件(注册时)?对于数据库中具有唯一约束的每个用户,我需要分别使用三个字段,还是应该将它们放在一起 非常感谢。对SQL查询进行更改可以实现这一点。下面是如何做到这一点 <label>Username

我正在写一个需要注册的网络应用程序。我希望我的用户能够注册电子邮件地址或电话号码。然后他们可以使用电话号码、电子邮件地址或用户名登录,就像facebook、twitter、Instagram等

我的问题是如何在后端数据库中处理这个问题? 登录时如何处理?如何理解输入的值是电话号码还是电子邮件(注册时)?对于数据库中具有唯一约束的每个用户,我需要分别使用三个字段,还是应该将它们放在一起


非常感谢。

对SQL查询进行更改可以实现这一点。下面是如何做到这一点

<label>Username / E-Mail</label>
<span style="line-height: 1.5em;"><input type="text" name="login" /></span>
SQL查询将是这样的,因为如果用户输入用户名或电子邮件,您的登录系统应该进行授权

SELECT id,password,psalt FROM users WHERE (username=:login OR email=:login) AND password=:pass

剩下的你都知道了。我是否需要为数据库中的每个用户分别提供三个具有唯一约束的字段? 可能是的。用户可以使用三个选项中的一个,具体取决于他们喜欢哪一个。因为您不知道他们将给您哪个字段,所以所有字段都可能接受null(即可以为空)。但是你必须检查你提交的所有值中,只有一个包含了email或phone no或username。 我相信除了上述三个值之外,您还需要其他值,例如密码等

2。在登录查询中如何处理?如何理解输入的值是电话号码或电子邮件(注册中)? 正则表达式将解决这个问题(当他们登录时)。 当他们注册时,给他们以下简要解释的选项。但当他们登录时,请使用正则表达式来确定他们是使用用户名还是电话号码登录,还是使用电子邮件登录,并采取适当的操作。 通过谷歌搜索,你可以在线找到该语言的正则表达式教程

解释 既然您在谈论web应用程序,我假设涉及html,无论您使用什么作为标记,都必须有三个输入字段作为选项,并且您可以让您的用户知道只有一个字段就足够了。也就是说,你不希望他们同时给出电话号码和电子邮件。请注意,如果您需要用户名进行注册,并且希望可选地使用用户名和密码对进行登录,则每个用户名必须是唯一的。在这种特殊情况下,您需要在完成用户名输入字段的输入后立即查询数据库,以检查是否使用了用户名。这可以通过使用Ajax来实现 您可以在网上找到ajax教程。如果它被拿走了,你让他们知道并阻止他们提交,但如果不是,他们可以继续。 如上所述,您需要让他们知道他们只能提供用户名、电话号码或电子邮件地址,但不能同时提供两者。您可以通过在字段上方包含“或”来完成此操作。 要强制他们只键入其中一个值,您需要捕获他们何时开始键入任何可选字段,因此如果他们已开始键入一个字段,则可以禁用或隐藏其他两个字段。使用此特定的解决方案,您甚至不需要正则表达式,只需包含一个属性,该属性可以帮助您确定它们提供给您的值的类型,例如:


电话号码
或电子邮件
或用户名
密码
提交

谢谢您的快速回答,但是注册怎么样?在注册时,如果是电子邮件或电话,我如何理解输入的值?还有一个问题,电子邮件、电话和用户名的唯一性如何?我应该在代码和查询中手动检查它,还是可以使用DBMS进行检查?怎样?感谢
username
,“phone”和
email
分别存储在一个表中以供注册,为什么您想知道用户输入的内容(我们分别存储值),如果您想要它,那么您可以使用jquery来知道它是否是电话号码或电子邮件的唯一性,电话可以通过服务器端验证进行检查(使用onkeyup或onclick将值发送到db check,如果存在并抛出错误),让我用另一种方式问一下,我是否需要为不同类型的注册使用单独的API?例如,一个用于电子邮件注册的API和另一个用于电话注册的API?另一个问题是关于字段的唯一性,如果您能帮助我,我将不胜感激。谢谢。
SELECT id,password,psalt FROM users WHERE (username=:login OR email=:login) AND password=:pass