繁体   English   中英

登录页面检查来自两个不同表的用户名

[英]Login page check username from two different tables

我有一个拥有两种类型的用户的网站,即医生和患者。 我将有关这两种类型用户的信息存储在两个不同的表中。 当用户登录时,我要检查用户提交的登录名是否存在于第一个表(例如:patient)或第二个表(例如:doctor)中。 我该怎么做?

以下是包含我编写的SELECT语句的代码的一部分:

$query = 
"SELECT username, password 
 FROM patient 
 WHERE username='$username' AND password='$password'";

我目前SELECT从患者表荷兰国际集团,但我想知道如何SELECT从病人表和医生表两种。

你能帮我吗?

您可以使用MySQL的UNION()函数执行此操作。

$query = "SELECT username, password 
    FROM table_1 
    WHERE username='$username' AND password='$password' 
    UNION 
    SELECT username, password 
    FROM table_2 
    WHERE username='$username' AND password='$password'";

注意:字符串变量必须用引号引起来。

不过,我必须指出,此方法可用于SQL注入,并且希望您不要以纯文本格式存储密码。

如果您以纯文本格式存储密码,则强烈建议您不要这样做,并且很容易破坏您的网站。

建议使用CRYPT_BLOWFISH或PHP 5.5的password_hash()函数。
对于PHP <5.5,使用password_hash() compatibility pack

另外,对于SQL注入, mysqli与预备语句一起使用 ,或者将PDO与预备语句一起使用 ,则它们要安全得多

您的DBMS是否支持UNION语句?

$query = "SELECT username,password FROM patient WHERE username='$username' AND password='$password' UNION SELECT username,password FROM othertable WHERE username='$username' AND password='$password";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM