从 json 文件(php)登录检查用户和密码。如何从json文件中读取文件

Posted

技术标签:

【中文标题】从 json 文件(php)登录检查用户和密码。如何从json文件中读取文件【英文标题】:Login checks user and passowrd from json file(php). How to read file from json file 【发布时间】:2021-12-31 04:44:55 【问题描述】:

我有一个问题,只是让我出错重试,它不检查 json 文件。

这是我的 php 代码:

<?php

if (isset($_SERVER["PHP_AUTH_USER"]) && isset($_SERVER["PHP_AUTH_PW"])) 
$json = file_get_contents("user-data.json");
$json_data = json_decode($json, true);
$user = $_SERVER["PHP_AUTH_USER"];
$pw = $_SERVER["PHP_AUTH_PW"];
$flag =false;
foreach ($json_data as $key => $value) 
    if ($value['PHP_AUTH_USER'] == $user && $value['PHP_AUTH_PW'] == $pw) 
        $flag = true;
        **echo "<p>Pozdrav $user, unijeli ste $pw kao zaporku.</p>\n";**
        break;
    
if($flag)
header('location: index.php');
 else 
  http_response_code(401);
  header("WWW-Authenticate: Basic realm=\"SECRET\"");
  echo "<p>Try again.</p>\n";
  
 

这是我的 .json 文件


"user":"admin",
"password":"admin"
,

"user":"login",
"password":"login"

重试只是给我一个错误,它不检查 json 文件。

【问题讨论】:

这是您的 json 文件的确切内容吗?是不是这样的情况下是无效的json,会导致json_decode返回false。考虑到它代表一个数组,它在文件的开头和结尾缺少一个方括号 【参考方案1】:

请添加一对方括号将您的“json数据”括起来,其中包含一个数据数组(多个用户名和密码对)。

因此,以下将是从 json 数据中获取用户名和密码的一种方法(我注释掉了 file_get_contents 部分并使用字符串存储它,以便更直接)

<?php
//$json = file_get_contents("./user-data.json");

$json='[
"user":"admin",
"password":"admin"
,

"user":"login",
"password":"login"
,

"user":"***",
"password":"goodpassword"

]';

$json_data = json_decode($json, true);

foreach ($json_data as $key=>$getdata) 
   echo $getdata["user"] . "-" . $getdata["password"];
   echo "<hr>";

    ?>

在这个沙箱中查看结果(请点击执行):

https://wtools.io/php-sandbox/b7Qv

因此,请修改上述代码以与 $_SERVER["PHP_AUTH_USER"] 和 $_SERVER["PHP_AUTH_PW"] 进行比较以适合您的情况。 所以,改变块:

$user = $_SERVER["PHP_AUTH_USER"];
$pw = $_SERVER["PHP_AUTH_PW"];
$flag =false;
foreach ($json_data as $key => $value) 
    if ($value['PHP_AUTH_USER'] == $user && $value['PHP_AUTH_PW'] == $pw) 
        $flag = true;
        **echo "<p>Pozdrav $user, unijeli ste $pw kao zaporku.</p>\n";**
        break;
    

$user = $_SERVER["PHP_AUTH_USER"];
$pw = $_SERVER["PHP_AUTH_PW"];
$flag =false;
foreach ($json_data as $key=>$getdata) 

    if ($user == $getdata["user"] && $pw == $getdata["password"]) 
        $flag = true;
        **echo "<p>Pozdrav $user, unijeli ste $pw kao zaporku.</p>\n";**
        break;
    



【讨论】:

非常感谢! :) 不客气。祝你有美好的一天

以上是关于从 json 文件(php)登录检查用户和密码。如何从json文件中读取文件的主要内容,如果未能解决你的问题,请参考以下文章

PHP登录系统不发送?

将数据从 PHP 传递到 HTML

PHP $_Session ,JS在成功插入用户名和密码后不允许会员登录

PHP/SQL 登录表单 - 如何检查数据库中的密码

PHP和HTML如何加载新文件

如何在 json 的帮助下使用 PHP、MySql 在 android 中验证用户登录凭据