我在尝试使用登录创建项目时遇到了一些问题,因为我需要存储用户'数据变成变量,所以我可以在所有页面中使用它。
实际上,登录调用模型中的一个函数,它检查用户是否存在,如果是,则将查询中获得的数据返回给控制器,然后控制器调用require_once("示例。 php")这使我能够使用数据在屏幕上打印它,但如果我切换页面,数据就会丢失,因为它没有被调用,就像这样(它有被简化了):
控制器
function example() {
$exampleUser = $_POST['username'];
$examplePass = $_POST['password'];
$example = new example_model();
$exampleResults= $example->do_example($exampleUser, $examplePass);
require_once("example1.php");
}
模型
function do_example($exampleUser, $examplePass) {
$exampleResults = mysqli_fetch_assoc($connection->query("SELECT * FROM users WHERE username = '$exampleUser' AND password = '$examplePass'");
return $exampleResults;
}
查看example1.php
<?php
echo $example['username'];
// RESULTS IN DISPLAYING "ExampleName"
?>
查看example2.php
<?php
echo $example['username'];
// ERROR BECAUSE IT DOESN'T HAVE THE DATA STORED ANYMORE
// AND I DON'T WANT TO CALL A FUNCTION TO GET THE DATA FOR THE USER AGAIN AFTER EACH PAGE CHANGE
?>
我一直在考虑使用$ _SESSION变量来存储我需要的数据来登录用户所以我可以在所有页面上使用它(它的名称和ID,大多数)并且它到目前为止工作,但我想知道如果这样做是一种很好的做法,或者是否有更好的做法?或者我应该如何存储从登录中获取的数据,以便我可以在所有页面中使用它而没有问题?
答案 0 :(得分:3)
为此,您需要使用php sessions
//在所有页面上启动会话
session_start():
您将在启动了seasion的所有页面上访问$ _SESSION VARIABLES数组。
要定义变量,请遵循与关联数组相同的语法:
$_SESSION['name'] = value ;
完成后通过
销毁会话session_destroy();