php - var_dump 数组返回我的字符串,双倍?
问题描述
经过几个小时的研究,到目前为止,我自己还没有找到合适的解决方法,所以我来了!
我目前正在开展一个学校项目,该项目使用 login.php 验证器文件来检查用户是否填写了所有输入等,以及创建会话。
require "config.inc.php";
$query = ("SELECT username, password, active FROM *DATABASE* WHERE username='".$username."' AND password='".$password."' AND active='1'") or die(mysql_error());
$result = mysqli_query($mysqli, $query);
$match = mysqli_num_rows($result);
if($match > 0){
//Directing to account page
header("Location:account.php");
//User info search
$queryID = ("SELECT id FROM *DATABASE* WHERE username='".$username."' AND password='".$password."' AND active='1'") or die(mysql_error());
$resultID = mysqli_query($mysqli, $queryID);
$id = mysqli_fetch_assoc($resultID);
$queryNAME = ("SELECT name FROM *DATABASE* WHERE username='".$username."' AND password='".$password."' AND active='1'") or die(mysql_error());
$resultNAME = mysqli_query($mysqli, $queryNAME);
$naam = mysqli_fetch_assoc($resultNAME);
//Session user info
$_SESSION['id'] = $id;
$_SESSION['naam'] = $naam;
这只是验证器的一小部分,但正如您所见,它重定向到帐户页面(这很好),并且应该为在数据库中找到的名称和 ID 创建会话。
然后帐户页面再次接收会话并将其转换为具有以下代码的变量;
//SESSIONS
require 'session.php'; //CHECKS IF SESSION IS VALID, IF NOT: RETURN TO HOME
//VARIABLES
if (isset($_SESSION['naam']) && isset($_SESSION['id']) && isset($_SESSION['username'])) {
print_r($_SESSION['naam']); //Debug purposes
print_r($_SESSION['id']);
print_r($_SESSION['username']);
$id = implode($_SESSION['id']); //Convert to String
$naam = implode($_SESSION['naam']);
$username = ($_SESSION['username']); //Already a string, this was a variable used in the POST form
var_dump($naam);
} else {
echo "No sessions"; //Debug purposes
}
当我在我的帐户页面上回显用户名时,它会很好地显示用户名,我认为这是因为用户名一直是一个字符串开头。
然而,当我回显 naam 变量时,即使数据库中的 naam 只是管理员,它也会显示“AdministratorAdministrator”。
这是我的 print_r 结果:
Array ( [0] => Administrator [name] => Administrator )
Array ( [0] => 23 [id] => 23 )
admin
string(26) "AdministratorAdministrator"
关于如何确保每当我回显 naam 变量时,它只显示管理员一次,而不是两次的任何线索?谢谢!
解决方案
您只需要在 Session 中保存您需要的数据
$_SESSION['id'] = $id['id'];
$_SESSION['naam'] = $naam['name'];
在您的情况下,您将从函数中保存整个结果mysqli_fetch_assoc
,这是一个数组,您可以从文档中看到:
推荐阅读
- python - Python 语法混乱
- ios - 投射标签栏控制器的导航控制器的可见视图控制器
- pandas - 如何在一个热编码数据帧中找到唯一组合?
- amazon-web-services - 如何指定从哪个长代码向 AWS 发送短信
- android - 此应用程序不支持固定 Windows
- java - 尝试解析 OpenJFX jmods 时 jdeps 命令失败
- keras - 使用 Keras 预训练的 InceptionV3/Xception 模型时的错误预测
- vba - 更改 MS Word 中某些文本的字体颜色
- grails - Grails:如何为领域类编写特征?
- html - Css 网格和图像叠加