从 2 个不同的表以用户或管理员身份登录

2024-01-03

好吧,我想以用户和管理员身份登录,我的用户表称为“sollicitant”,我的管理员是“bedrijf”(这是荷兰语,哈哈,抱歉)。我现在的代码仅适用于 1 个表,但我如何才能有一个在两个表中查找以登录的 sql 查询?

<?php
if(isset($_POST['email'])) {

    $inputEmail = htmlspecialchars($_POST['email']);
    $inputWachtwoord = htmlspecialchars($_POST['wachtwoord']);

    $servername   = "localhost";
    $databasename = "vacaturebank.";
    $username     = "root";
    $password     = "";

    try {
        $conn = new PDO("mysql:host=$servername; dbname=$databasename", $username, $password);

        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    } catch(PDOException $e) {
        echo "Connection failed: " . $e->getMessage();
        return;
    }

    try {
        $stmt = $conn->prepare("SELECT * FROM sollicitant WHERE email = '$inputEmail'");
        $stmt->execute();

        $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
        $row    = $stmt->fetch();

        $rowCount = $stmt->rowCount();

        if ($rowCount) {

            if ($inputWachtwoord == $row['wachtwoord']) echo "<br/>Successvol ingelogd";
            else                                    echo "<br/>Gebruikersnaam en wachtwoord komen niet overeen.";
            header("Location: inloggen.html");
        } else {
            echo "<br/>Login failed, no record found";
        }
    }
    catch(PDOException $e) {
        echo "Error: " . $e->getMessage();
    }

    $conn = null;

    session_start();

    $_SESSION["login"] = true;
    $_SESSION["email"] = $inputEmail;

}
?>

您需要使用以下命令指定两个表email column:

SELECT * 
FROM sollicitant, bedrijf 
WHERE sollicitant.email = '$inputEmail' 
AND bedrijf.email = '$inputEmail'

另一种可能性是使用带有 alias' 的显式 JOIN (别名'只是为了缩短时间,您不必使用它们。):

SELECT *
FROM sollicitant s, bedrijf b
ON s.email = b.email
WHERE s.email = '$inputEmail' 

这样做意味着您只需将一个表的一列中的电子邮件视为JOIN确保您只获得具有匹配电子邮件的那些行。如果查询为空,则电子邮件在两者中都不存在。

Edit

如果您想根据用户的角色决定去哪里,您应该将所有用户合并到一个表中,其中有一列描述用户的角色:

SELECT * FROM users WHERE email = '$inputEmail' 

获取数据后,PHP 会执行以下操作:

if('sollicitant' == $row['role']) {
    header('Location: sollicitant.php');
    exit();
} elseif ('bedrijf' == $row['role']) {
    header('Location: befrijf.php');
    exit();
} else {
    echo 'There is a problem with your login.';
}        

Warning!

...as others have said...

小鲍比 http://bobby-tables.com/ says 您的脚本面临 SQL 注入攻击的风险。 http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php. Even 转义字符串 http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string不安全!

我讨厌人们说“我还没那么远……” or “这个网站不会公开……” or “只是为了学校,安全无所谓……”。如果老师和教授从第一天起就没有谈论安全性,那么他们就做错了。挑战他们。他们正在教授草率且危险的编码实践,学生们稍后将不得不忘记这些实践。我也讨厌人们说:“稍后我会增加保安……” or “现在安全已经不重要了……” or “忽略安全风险……”.

切勿存储纯文本密码!请用PHP's 内置函数 http://jayblanchard.net/proper_password_hashing_with_PHP.html来处理密码安全。如果您使用的 PHP 版本低于 5.5,您可以使用password_hash() 兼容包 https://github.com/ircmaxell/password_compat. 没有必要转义密码 http://stackoverflow.com/q/36628418/1011527或在散列之前对它们使用任何其他清理机制。这样做changes密码并导致不必要的额外编码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 2 个不同的表以用户或管理员身份登录 的相关文章

  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • 最大宽度调整以适应文本?

    不是最好的标题 但无论如何 我有一个元素max width和一些文字 如果文本长度超过一行所能容纳的长度 我会得到以下结果 My text here hello everyone 换句话说 它占据了完整的最大宽度 但由于单词向下移动 右侧有
  • 将表数据从一个 SQL Server 导出到另一台 SQL Server

    我有两个 SQL Server 都是 2005 版本 我想将多个表从一个表迁移到另一个表 我努力了 在源服务器上 我右键单击数据库 选择Tasks Generate scripts 问题是在下面Table View options没有Scr
  • CodeIgniter:My_Lang 中的 get_instance

    我发现这个有用的国际化代码 http pastebin com SyKmPYTX http pastebin com SyKmPYTX 一切正常 除了我无法在此类中使用 CI 函数 我想从 DB 设置 languages 和 special
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 为什么 IE8 在我的图像锚标记上添加底部边框?

    我知道 这很可悲 但今天早上 IT 刚刚在我的机器上安装了 IE8 我立刻遇到了一个明显的问题 尽管我知道答案就在我面前 但我已经把它搞砸了太久了 首先 这是网站 www mchenry edu http www mchenry edu 在
  • 如何选择具有“A”类但不具有“B”类的 div?

    我有一些 div div class A Target div div class A B NotMyTarget div div class A C NotMyTarget div div class A D NotMyTarget di
  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • 如何使用 LAMBDA 表达式在 LINQ 中执行 IN 或 CONTAINS?

    我有以下 Transact Sql 我正在尝试将其转换为 LINQ 并且很挣扎 SELECT FROM Project WHERE Project ProjectId IN SELECT ProjectId FROM ProjectMemb
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • 如何在NiFi中映射流文件中的列数据?

    我有 csv 文件 其结构如下 Alfreds Centro Ernst Island Bacchus Germany Mexico Austria UK Canada 01 02 03 04 05 现在我必须将这些数据移入数据库 如下所示
  • 网站的主体和元素固定在 980px 宽度上,不会缩小

    我试图在 Rails 应用程序顶部启动前端 仅 HTML CSS 页面 但在使用 320px 视口时遇到问题 有些元素不会按比例缩小 我不明白为什么 我已经完成了检查元素 为各种元素提供了max width 100 and or width
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • SQL - != 'NULL' 的解释

    我的SSMS代码如下 Select top 50 From FilteredContact Where statuscode 1 and emailaddress1 NULL and telephone1 NULL and address1
  • 如何创建适合屏幕宽度的等宽/高框? [复制]

    这个问题在这里已经有答案了 我正在尝试建立一个网站 其中有很多宽度和高度相等的框 例如 我有一个页面 其中并排有两个相同大小的框 简单的解决方案是将宽度和高度设置为 50vw 这在出现滚动条之前效果很好 我已经用谷歌搜索了几个小时 但无法理
  • PHP 拒绝从 var_dump、print 等输出数据

    我目前正在运行 WAMP 服务器 并且在过去的 30 分钟内一直在尝试弄清楚我的项目如何以及为什么不会输出任何指定的 PHP 数据 起初我以为是因为我有一个 htaccess文件的output buffering被禁用 所以我删除了它 仍然
  • 在本地 SDK 服务器上工作时,实时 Google App Engine 上出现 404

    我已经在GAE标准环境上部署了几个PHP应用程序 一切正常 现在我正在部署一个新应用程序 该应用程序位于由gcloudSDK按预期工作 终端命令 dev appserver py log level warning app yaml 问题是
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • HTML 锚点,禁用样式

    我有一些 html 锚链接代码 与文档的其余部分不同 我希望它看起来不是链接 有没有一种简单的方法可以禁用由于将文本包装在锚标记中而引起的样式更改 而不必强行使其相同 即 如果我更改正文字体样式 我不必也更改其他一些 link东西 将颜色设
  • CSS溢出文本显示在几行中,没有断字

    我有一些长文本显示在 div 中 该 div 具有固定的宽度和高度 我希望文本显示在几行上 作为 div 高度 并且句子单词不会中断 一行中的单词前缀和下一行中的继续 此外 我想在末尾添加省略号最后一句话 CSS white space n

随机推荐

  • 有什么方法可以以编程方式选择 TextView 中的文本吗?

    我有一个TextView我希望允许用户搜索特定的字符串 如果找到该字符串 它应该突出显示 使用背景跨度太慢而且很尴尬 所以我想弄清楚是否可以让它选择字符串 我知道与EditText这可以使用setSelection 但我不希望用户能够编辑文
  • 富文本框到字符串

    我有一个绑定到菜单项的富文本框 以允许粗体 斜体和下划线以及剪切 复制和粘贴 但是如何获取 RichTextBox 内容并将其从代码隐藏转换为字符串哪个将带有粗体 斜体等
  • 使用 Alamofire 处理超时

    是否可以为 Alamofire 请求添加超时处理程序 在我的项目中 我这样使用 Alamofire init let configuration NSURLSessionConfiguration defaultSessionConfigu
  • 我需要将 constexpr 放在 else-if 之后吗?

    灵感来自这个答案 https stackoverflow com a 52355930 7151494 我尝试复制并粘贴 并在中添加测试main 这段代码 template
  • Perl 5 中存在哪些伪运算符?

    我目前正在记录 Perl 5 的所有运算符 请参阅佩洛普夫 http github com cowens perloprefGitHub 项目 我决定也包含 Perl 5 的伪运算符 对我来说 Perl 中的伪运算符是任何看起来像运算符的东
  • C - 取消引用空指针

    我正在尝试创建自己的交换函数 但遇到了麻烦 为什么我收到 取消引用空指针 void ft swap void a void b size t nbytes unsigned char cur a unsigned char cur b si
  • IBM Worklight - 页面碎片

    我正在尝试将现有的phonegap 项目迁移到worklight 中 Phonegap 应用程序使用 mobile changePage 进行页面导航 这个函数会重新加载现有的 DOM 还是创建一个新的 DOM 由于worklight建议使
  • yii2详细视图条件行类

    我想根据条件更改详细视图中单个属性的类 如果我不想让它成为有条件的 它会像这样工作 attribute gt ungueltig format gt boolean contentOptions gt class gt danger 我希望
  • 无法调试 dotnet core GenericHost docker 容器

    我在最新的 Windows 版本 Windows 10 2004 上使用 Linux 容器 并启用了 WSL 2 和 Docker Desktop 2 3 0 3 45519 我右键单击 docker compose 文件 然后选择Set
  • Android:将数组保存到应用程序数据

    是否可以将整个数组 甚至ArrayList 保存到android应用程序数据中 据我所知 你只能做像 putInt putBoolean 或 putString 这样的事情 但是更复杂的数据类型呢 有没有办法做到这一点 或者我是否必须先将整
  • C 通用数组实现

    我正在尝试在 C 中实现通用数组列表 但是 当数据类型是 int 以外的任何类型时 列表将不会包含正确的数据 例如 像 123 1234 作为双精度数 当将双精度数传递到列表中时 它将变成 000 0000 一 当数据类型为int时 它将有
  • python中如何输入输入的数字

    我想内联输入 1 input number 5 2 1 5 3 4 2 python中如何接收输入数量的输入 我已经尝试过这样的 num int input inputs num mlist for i in range num n int
  • 如何将 Hive 与 Power BI 连接

    我无法将 Hive 视为 power BI 中列出的数据源 有没有办法将Hive数据库与power bi桌面连接 还有有什么限制吗 应在系统中安装并配置 Hive ODBC 驱动程序 以便与 Power BI 连接 成功配置 ODBC 驱动
  • AngularJS 事件未从 $rootScope 触发

    我遇到了 rootScope broadcast 事件未被触发的问题 App run function rootScope var text Not So Static Now rootScope broadcast event stati
  • 在 Android 中使用经过训练的 Scikit-learn svm 分类器 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发一个 Android 应用程序 它使用手机中的传感器数据对活动进行分类 与任何 Java 机器学习库相比 我也更喜欢 sci
  • C#中有“记录”吗?

    我希望将一些客户数据存储在内存中 我认为最好的方法是使用记录数组 我不确定这是否是 C 中的名称 但基本上我可以调用Customer i Name并将客户姓名作为字符串返回 在图灵中 它是这样完成的 type customers recor
  • 将成绩单 .srt 文件解析为可读文本

    我有一个视频脚本 SRT 文件 其中包含传统 SRT 格式的线条 这是一个例子 1 00 00 00 710 gt 00 00 03 220 Lorem ipsum dolor sit amet consectetur adipisicin
  • java.lang.AbstractMethodError:当我尝试使用 nexmo(vonage) API 发起出站语音呼叫时出现此异常

    我的 pom xml 用于所有相关的依赖项 没有其他依赖项在内部使用以下依赖项
  • TypeScript 中除了函数之外还有其他类型吗?

    我想表达的是 参数应该是一个对象或者简单的值类型 数字 布尔值 字符串等 而不是函数 如果我使用Object 编译器让我分配一个函数 var test Object gt a 如果我使用any 当然也是同样的结果 在这种情况下有什么类型或技
  • 从 2 个不同的表以用户或管理员身份登录

    好吧 我想以用户和管理员身份登录 我的用户表称为 sollicitant 我的管理员是 bedrijf 这是荷兰语 哈哈 抱歉 我现在的代码仅适用于 1 个表 但我如何才能有一个在两个表中查找以登录的 sql 查询