【问题标题】:how to check the data in the database?如何查看数据库中的数据?
【发布时间】:2020-05-24 11:04:55
【问题描述】:

告诉我如何配置授权。 PHP 我基本知道,因为我不使用它,但我需要实现这个任务。我希望当点击按钮授权通过并转到另一个页面时。 我不完全了解如何检查数据库中的数据并将其与用户数据进行比较,如果有巧合,请重定向到另一个页面。 你走对路了吗?我该如何解决我的问题?

authdb.php

<?php
$dbname = "dictdb";
$username = "root";
$userpass = "";
$charset = "utf8";
$options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];

$userdata = [
    "logVal" => trim($_POST["logVal"]),
    "passVal" => trim($_POST["passVal"])
];

$db = new PDO("mysql:host=$dbhost;dbname = $dbname;charset=$charset", $username, $userpass, $options);
if (!empty(trim($_POST["logVal"])) && !empty(trim($_POST["passVal"]))) {
    $query = "SELECT * FROM  `dictdb`.`user` WHERE `login` = :logVal AND `password` = :passVal";
    $user_data = $query-fetchAll();

if ($user_data[password] == :passVal) {
echo "ok";
};

?>

auth.php

$(document).ready(function () {
    $("button.btn-auth").on("click", function () {
        $.ajax({
            url: '/src/php/auth.php',
            type: "POST",
        });
    });
});

【问题讨论】:

标签: javascript php database


【解决方案1】:

首先,您正在执行仅返回 1 行的表搜索,因此将 fetchAll 更改为 fetch -

// change this - $user_data = $query-fetchAll(); to
$user_data = $query-fetch(PDO::FETCH_ASSOC);
//This part is also incorrect - if ($user_data[password] == :passVal) as there is no $user_data[password] and will return an error... Change to -
if ($user_data[passVall] == :passVal)

然后您发布到错误的页面,您的 PHP 登录数据将永远不会运行 - //url: '/src/php/auth.php' 应该是 - 网址:'/src/php/authdb.php',

如果登录成功,在您的 authdb.php 页面中,将 $user_data 返回到您的 auth.php 页面 -

 if ($user_data[password] == :passVal) {
  return $user_data;
  //direct user back to your auth page -
  include( '../auth.php' ); //check correct path...
 };

现在按照您的意愿处理返回的数据,不过我个人会在我的 authdb.php 页面中将返回的数据加载到会话中。

您的帖子部分不正确,您可以为此做点什么 -

 $.post("../authdb.php", {
    logVal: logVal,
    passVal: passVal
 },
    function (data) {
     if (data == '0') {
        alert("Incorrect or Invalid Password entered.");

        return false;
     } else {
        alert("Sign In successful.");
 }

在您的 authdb.php 文件中,检查密码等是否匹配后 -

if ($user_data[passVal] == :passVal) {
 echo count($user_data); //Will return 0 if failed, 1 if success
    die;
};

【讨论】:

  • @Dharman,我认为我提供了足够的 cmets 并引用了相应地引用 PHP 或 Javascript 的正确页面,不确定您在问什么。
  • 看起来像 PHP 代码,但语法不正确。
  • 我明白了,根据提交的 OP 代码,这是 PHP 和 Javascript/Ajax。
  • OP 没有提交有效的 PHP 代码。有问题的代码不是有效的 PHP 代码,您的代码也不是。只需再次检查您的“PHP”。将其放入 IDE 中,您会发现语法甚至不正确。你没有修复任何东西,你只是引入了更多的语法错误。
猜你喜欢
  • 2022-11-25
  • 1970-01-01
  • 2019-07-13
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多