设置服务器范围的会话变量?

时间:2014-07-28 21:33:56

标签: php session-variables

我试图通过设置一个“ON”或“OFF”的简单会话变量来“关闭”我的网站。

<?php
    $_SESSION['STATUS'] = "OFF";
?>

在每隔一页上,网站会检查STATUS是否已关闭,并将用户重定向到“我们已关闭”页面。

<?php
    session_start();
    if ($_SESSION['STATUS'] == "OFF") {
        echo "<script>window.location='http://*****/sorry/';</script>";
    }
?>

问题是我设置的会话变量是我的会话所独有的,而且也可能正在浏览网站的任何其他客户端都不受更改的影响。有没有办法设置影响每个会话的服务器范围的会话变量?

2 个答案:

答案 0 :(得分:5)

PHP没有“服务器范围”的概念。每个用户持久性只有$ _SESSION。

您可以在网络服务器级别设置一些内容。例如在Apache中:

SetEnv EXAMPLE.COM_STATUS off

然后

<?php

if ($_ENV['EXAMPLE.COM_STATUS'] == 'off') {
   die("Site be gone");
}

当然,总有哨兵文件或其他“外部”标记更容易设置:

$ touch /home/sites/example.com/kill_it_now

<?php

if (file_exists('/home/sites/example.com/kill_it_now')) {
   die("Site be gone");
}

答案 1 :(得分:0)

默认情况下,PHP基于每个用户处理会话数据。为了让会话可能共享设置或执行除默认行为以外的任何操作,您需要实现自己的Session Handler

会话旨在基于每个用户完成,在某种环境变量或在任何其他方法设置一个位置的值以从多个会话中读取时,全局设置更好。