从 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文件中读取文件的主要内容,如果未能解决你的问题,请参考以下文章