我有一个注册表格,该表格通过可序列化的方法将用户数据保存到文本文件中。
a:1:{i:0;s:44:"{"name":"Mario","pw":"3214","email":"mo@mo"}";}
我可以反序列化数据,但是在从键“名称”中提取值“ Mario”时遇到了一些麻烦。代码如下:
$array = file_get_contents('user.txt');
$artikel = unserialize($array);
foreach ($artikel as $item ){
echo $item['name'];
}
我收到的错误是字符串偏移量'name'非法。任何帮助将不胜感激。
答案 0 :(得分:1)
您有一个序列化的JSON字符串数组。
所以尝试这样
//$array = file_get_contents('user.txt');
$artikel = unserialize('a:1:{i:0;s:44:"{"name":"Mario","pw":"3214","email":"mo@mo"}";}');
//print_r($artikel);
foreach ($artikel as $item ){
$json = json_decode($item);
echo $json->name;
}
PS:以纯文本格式存储密码是非常糟糕的安全性,将其存储在简单文件中的安全性甚至更差,所以我希望系统永远不会真正使用它。 PHP提供了
password_hash()
和password_verify()
,请使用它们。
答案 1 :(得分:0)
您需要在json_decode
之后foreach
中使用true
作为第二个参数,然后您将获得所需的数组。
<?php
$arr = 'a:1:{i:0;s:44:"{"name":"Mario","pw":"3214","email":"mo@mo"}";}';
$artikel = unserialize($arr);
foreach ($artikel as $item ){
$response = json_decode($item, true);
echo $response['name'];
}
?>