【问题标题】:User authentication from multiple tables来自多个表的用户身份验证
【发布时间】:2018-11-12 12:24:27
【问题描述】:

我有一个登录屏幕,可以在我的网络应用程序上验证“用户”。但我也想为“客户”重复使用相同的登录名。它是一种电子商务类型的 Web 应用程序。我主要使用 PHP 和 MYSQL 使用一张表进行登录身份验证。以下是我当前用于验证“用户”的代码:

//Query statement for selecting details from database
$Sql = "SELECT * FROM users WHERE email = '".$user_name."' AND password = '".$password."'";

【问题讨论】:

  • 为什么不用公共键加入这两个表并继续你正在做的事情
  • 有一个 type 列,它是一个枚举、int 或 varchar,并在其中设置类型。通过这种方式,您可以区分用户类型并将其全部放在一个表中。通常,您有一个用户表,其中包含用户的核心信息(id、类型、用户名、密码、创建、更新),然后将“其他”信息(名称、dob [...])存储在另一个表链接中他们通过用户 ID。 但是,就目前而言,您的问题过于宽泛/主要基于意见
  • 嘿 Rahul 和 Script47... 请注意我的编辑。希望问题现在更清楚......请告知
  • 永远不要存储纯文本密码!请使用 PHP 的built-in functions 来处理密码安全问题。如果您使用的 PHP 版本低于 5.5,您可以使用 password_hash() compatibility pack在散列之前不需要escape passwords 或对它们使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。

标签: php mysql


【解决方案1】:

简而言之,将编码部分留在您刚刚演示的登录中。在 users 表中创建列 user_type。

方法一:-

$Sql = "SELECT * FROM users WHERE email = '".$user_name."' AND password = '".$password."'";


if($sql['user_type']=="customer"){

$sql2 = "select * from customers";
}

现在使用 session 来存储客户字段。

你也可以重定向到不同的页面

if( $user == 1){ //check if user or password is correct from query


 if($user_type == "customer"){ //check usertype

    header("Location:/application/app.php"); //if normal user redirect to app.php

    }else{

    header("Location:/administration/admin.php"); //if admin user redirect to admin.php

    }
}

[follow this link for tutorials : link1]1

[follow this link for tutorials : link2]2

【讨论】:

  • 我们不要教授/传播草率和危险的编码实践。如果您发布没有准备好的陈述的答案you may want to consider this before posting。另外a more valuable answer comes from showing the OP the right method.
  • 你的意思是,如果有人使用 PHP 5.6,而他的整个项目是旧版本的 PHP。我会先告诉他们请更新你的 PDO 或 MYSQLI 的整个项目,然后我会回答他们?我不应该根据他们的问题和疑问回答,但我必须告诉他们请更新到较新版本的 PHP?我不应该解决他们的问题,而是需要为他们创造一个新问题。我不应该按照他们问我的逻辑去追究他们的错误吗?
  • 不,您必须向用户展示(或警告)SQL 注入。 5.6 版允许 PDO 和 MySQLi 准备好的语句,所以这与版本无关。顺便说一句,这不是我的反对意见
  • @JayBlanchard 对不起,我没有就版本问题向他们发出警告,但这与他们的问题无关。我不想离开话题,你可以警告他们。
  • 我确实在 cmets 中警告过他们。 good answer 将有类似的警告,不仅针对 OP,而且针对 Stack Overflow 的未来访问者。
猜你喜欢
  • 2016-10-18
  • 2018-09-01
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
  • 2014-01-26
相关资源
最近更新 更多