php - 我如何创建一个可以从任何文件访问的全局 php 变量
问题描述
所以我创建了一个导航栏并添加了类似的代码,这就是我所拥有的,
<ul>
some links
</ul>
<?php
if logedin == true) {
echo "you are loged in";
} else {
echo "please log in";
}
</nav>
现在这段代码的另一部分在另一个名为 account.php 的文件中,这不是我拥有的真实代码,但这是我用来演示的东西,
$logedin = true;
但是代码不起作用,并且变量没有显示在第一页(顶部的代码)上。我能做些什么?谢谢!
(编辑)我忘了说这个,但导航栏超过 1 页,问题和 idk 如何在超过 1 页上使用帖子。
解决方案
指示某人是否已登录的值最好存储在 Session 中 - 然后它将在对不同脚本的请求之间(由同一用户)持续存在,但不是永久存在。
例如
登录.php
当用户成功登录后,设置一个变量
<?php
session_start(); //access the session
//...some code here to check username / password etc, and then if they are all ok, you can set them as logged in for the duration of the session....
$_SESSION["loggedin"] = true; //store a variable in the session
然后在home.php中,当用户访问此页面时,您可以检查会话以查看他们是否成功登录:
<?php
session_start();
$loggedIn = $_SESSION["loggedin"];
//if not logged in, redirect back to the login page and end the script
if ($loggedIn == false) {
header("Location: login.php");
exit();
}
//otherwise, continue as normal...
这里有关于会话如何工作的全面解释。
推荐阅读
- java - Groovy 脚本性能包含 vs 匹配
- node.js - 在树中找到最小的节点
- firebase - 在 Flutter 中将数据保存到 Firebase 实时数据库
- python - Tensorflow 中的“阵列”检测
- kubernetes - 如何确定 Kind Cluster 中的节点(cpu、内存)?
- ios - Xcode 卡在从设备 tvOS 复制缓存文件
- python - 如何为数据框制作滚动渐变列
- flutter - Flutter:与 Provider 的 UI 反应
- oracle - Oracle XE 和 DBeaver:ORA-12514,TNS:listener 目前不知道连接描述符中请求的服务
- c - 找不到命令分配数组脚本bash