【发布时间】:2014-04-28 14:59:32
【问题描述】:
我有以下 php 文件的构造:
- 需要页眉和页脚的 index.php(效果很好)
- 一个 wrapper.php,它根据 require_once 调用包含在受保护文件夹“包含”(只能通过 php 服务器端读取)中的请求站点的内容
- 一个 login.php 包含在其中并被 wrapper.php 包含
- header.php 包含 jquery 并提供 header,而 footer.php 提供结束标签等。
我会尝试放一个简化的代码示例:
index.php 的内容:
<?
session_start();
session_name('platform');
require_once "includes/header.php";
$callwithinindex = 1;
if ($_SESSION['authenticated'] != 1)
{
echo'
<script>
$("#content").load("wrapper.php?target=login");
</script>
';
}
require_once "includes/footer.php";
?>
wrapper.php 的内容:
<?
if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])
AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest' AND $callwithinindex == 1) {
$target = $_GET['target'];
require_once 'includes/'.$target.'.php';
}
?>
login.php 为登录窗口提供 html 代码。
问题是,$callwithinindex 没有传递给 wrapper.php,我不明白为什么。这个变量的原因是为了确保 wrapper.php 只能在它包含在 index.php 中时才能被调用,除了检查它是否作为 xmlhttprequest 调用。
如果我不考虑变量,它可以工作(所以 require 本身可以正常工作)但我不明白为什么 wrapper.php 没有从 index.php 获取 $callwithinindex 变量。
我不想使用会话变量,因为一旦设置了它,就可以调用 wrapper.php 而无需在 index.php 中设置它。 有什么提示吗?
【问题讨论】: