在服务器(而不是客户端)上设置并获取PHP会话

在服务器(而不是客户端)上设置并获取PHP会话,php,jquery,ajax,session,client-server,Php,Jquery,Ajax,Session,Client Server,我有一个问题,在很大程度上依赖于会话来获得不同计算机的实时更新。下面是一个场景: [计算机A]管理页面: 若点击按钮,特定文本将显示在网站的每一页上,无论是谁的计算机访问它 [计算机B]客户端页面: 我必须看到我的网页上的文本实时,而不是加载它每当管理员点击按钮 这是我的密码: 管理页面:Admin.php $("#newFight").click(function(){ var newFight = "newFight="+1;

我有一个问题,在很大程度上依赖于会话来获得不同计算机的实时更新。下面是一个场景:

[计算机A]管理页面: 若点击按钮,特定文本将显示在网站的每一页上,无论是谁的计算机访问它

[计算机B]客户端页面: 我必须看到我的网页上的文本实时,而不是加载它每当管理员点击按钮

这是我的密码:

管理页面:Admin.php

$("#newFight").click(function(){
                var newFight = "newFight="+1;
                $.ajax({
                    type:       "post",
                    url:        "../includes/newfight.php",
                    data:       newFight,
                    cache:      false,
                    success:    function(html){
                        if(html == 0){
                            alert("Open a Game First");
                        }
                        else if(html == 1){
                            $("#newFight").attr('disabled', 'disabled');
                            // Real time update of fight sequence
                            $("td#fightId").load('../includes/getfight_id.php');
                            $("td#fightHead").html("<em>Fight is on.</em>");
                        }
                    }
                });
            });
session_start();
require_once('dbconn.php');
 if(isset($_POST['newFight'])){
        if($_POST['newFight'] == $_SESSION['gameActive']){
            // Make a new fight
            echo $msg = 1;
            $query = "INSERT INTO fights(fight_game_id) VALUES(".$_SESSION['game_id'].")";
            $execQuery = mysql_query($query);
            $last_id = mysql_insert_id();
            $_SESSION['fight_id'] = $last_id;
            $_SESSION['fight_active'] = 1;
        }
        if($_POST['newFight'] != $_SESSION['gameActive']){
            $msg = 0;
            echo $msg;
        }
    }
?>
 $(function(){
            var auto_refresh = setInterval(
               function (){
                  $("td#fightHeadUser").load('../includes/fightheaduser.php');
               }, 1000);
 });
session_start();
if(isset($_SESSION['fight_active']) && $_SESSION['fight_active'] == 1){
    echo "<em>Fight is on.</em>";
}
if(!isset($_SESSION['fight_active']) && $_SESSION['fight_active'] != 1){
    echo "<em>No fight yet.</em>";
}
这里的过程是这样的,如果单击一个按钮,jQuery将通过AJAX处理它并设置一个会话,例如:$\u session['button\u clicked']=1;供用户参考,因此可以使用setInterval(客户端)实时更新用户页面

这是一个客户端页面,只要管理员点击按钮,它就会得到实时更新

客户端页面:Client.php

$("#newFight").click(function(){
                var newFight = "newFight="+1;
                $.ajax({
                    type:       "post",
                    url:        "../includes/newfight.php",
                    data:       newFight,
                    cache:      false,
                    success:    function(html){
                        if(html == 0){
                            alert("Open a Game First");
                        }
                        else if(html == 1){
                            $("#newFight").attr('disabled', 'disabled');
                            // Real time update of fight sequence
                            $("td#fightId").load('../includes/getfight_id.php');
                            $("td#fightHead").html("<em>Fight is on.</em>");
                        }
                    }
                });
            });
session_start();
require_once('dbconn.php');
 if(isset($_POST['newFight'])){
        if($_POST['newFight'] == $_SESSION['gameActive']){
            // Make a new fight
            echo $msg = 1;
            $query = "INSERT INTO fights(fight_game_id) VALUES(".$_SESSION['game_id'].")";
            $execQuery = mysql_query($query);
            $last_id = mysql_insert_id();
            $_SESSION['fight_id'] = $last_id;
            $_SESSION['fight_active'] = 1;
        }
        if($_POST['newFight'] != $_SESSION['gameActive']){
            $msg = 0;
            echo $msg;
        }
    }
?>
 $(function(){
            var auto_refresh = setInterval(
               function (){
                  $("td#fightHeadUser").load('../includes/fightheaduser.php');
               }, 1000);
 });
session_start();
if(isset($_SESSION['fight_active']) && $_SESSION['fight_active'] == 1){
    echo "<em>Fight is on.</em>";
}
if(!isset($_SESSION['fight_active']) && $_SESSION['fight_active'] != 1){
    echo "<em>No fight yet.</em>";
}
客户端页面:fightheaduser.php

$("#newFight").click(function(){
                var newFight = "newFight="+1;
                $.ajax({
                    type:       "post",
                    url:        "../includes/newfight.php",
                    data:       newFight,
                    cache:      false,
                    success:    function(html){
                        if(html == 0){
                            alert("Open a Game First");
                        }
                        else if(html == 1){
                            $("#newFight").attr('disabled', 'disabled');
                            // Real time update of fight sequence
                            $("td#fightId").load('../includes/getfight_id.php');
                            $("td#fightHead").html("<em>Fight is on.</em>");
                        }
                    }
                });
            });
session_start();
require_once('dbconn.php');
 if(isset($_POST['newFight'])){
        if($_POST['newFight'] == $_SESSION['gameActive']){
            // Make a new fight
            echo $msg = 1;
            $query = "INSERT INTO fights(fight_game_id) VALUES(".$_SESSION['game_id'].")";
            $execQuery = mysql_query($query);
            $last_id = mysql_insert_id();
            $_SESSION['fight_id'] = $last_id;
            $_SESSION['fight_active'] = 1;
        }
        if($_POST['newFight'] != $_SESSION['gameActive']){
            $msg = 0;
            echo $msg;
        }
    }
?>
 $(function(){
            var auto_refresh = setInterval(
               function (){
                  $("td#fightHeadUser").load('../includes/fightheaduser.php');
               }, 1000);
 });
session_start();
if(isset($_SESSION['fight_active']) && $_SESSION['fight_active'] == 1){
    echo "<em>Fight is on.</em>";
}
if(!isset($_SESSION['fight_active']) && $_SESSION['fight_active'] != 1){
    echo "<em>No fight yet.</em>";
}
session_start();
如果(isset($_会话['fight_active'])和&$_会话['fight_active']==1){
回声“战斗开始了。”;
}
如果(!isset($_会话['fight_active'])和&$_会话['fight_active']!=1){
回声“还并没有战斗。”;
}
所以我的问题是。。它只在一台计算机上运行,所以当我打开两个浏览器(管理员和客户端)并单击按钮时,我可以看到客户端的页面实时更新,但是,当另一台计算机通过LAN访问客户端的页面时,它就不工作了。所以我怀疑这是因为会话只存储在我的电脑上,这就是为什么它不能在其他电脑上工作

你觉得我该怎么办?如果你能给我一个好的但不同的解决方案,那么我很乐意尝试一下

对不起,我的问题太长了。
TIA。

我认为您无法使用会话来解决此问题,因为每个用户(连接)都会获得另一个会话,并且无法从管理会话获取数据

您可以使用环境变量。每个连接都可以读取此连接

$_ENV

我认为您无法使用会话来解决此问题,因为每个用户(连接)都会获得另一个会话,并且无法从管理会话获取数据

您可以使用环境变量。每个连接都可以读取此连接

$_ENV

我想当一个客户想要观看或打架时,他必须登录?为什么不使用数据库呢?所以你可以注册哪个是开着的,你可以看历史等等。

我想当一个客户想看或者打架的时候,他必须登录?为什么不使用数据库呢?所以你可以注册哪个是打开的,你可以观看历史等等。

那么你是说我应该用$\u ENV替换上面代码中的每个$\u会话?谢谢。在上面的代码中是的。仅对用户相关变量使用$\u会话$_ENV用于全局变量。谢谢,我的主机返回后一定会尝试使用它。那么你是说我应该用$\u ENV替换上面代码中的每个$\u会话?谢谢。在上面的代码中是的。仅对用户相关变量使用$\u会话$_ENV代表全局变量。非常感谢,一旦我的主机返回,我肯定会尝试使用它。是的,他们必须登录,我也考虑过,但我预计网站流量会很大,如果我把它们放在db上,我认为这会完全减慢应用程序的速度。所以现在我正在考虑最快的解决方案。如果你希望你的网站有很多流量,那就足够公平了。但你知道你只储存一个战斗ID吗?没有其他的(这与打架有关)?哈哈,你有一个观点,它只是id,但打架按钮只是应用程序上许多按钮中的一个,我实际上有15个不同的按钮来完成相同的过程,存储到db实际上是我最后的选择,如果我完全没有解决方案:PIt也取决于你的查询方式。。你的数据库结构如何等等。。然后我建议创建两个数据库。。如果你想这么做的话:看这里,也许你在这篇文章上有一些东西是的,他们必须登录,我也考虑过,但我预计网站流量会很大,如果我把它们放在数据库上,我想这会完全减慢应用程序的速度。所以现在我正在考虑最快的解决方案。如果你希望你的网站有很多流量,那就足够公平了。但你知道你只储存一个战斗ID吗?没有其他的(这与打架有关)?哈哈,你有一个观点,它只是id,但打架按钮只是应用程序上许多按钮中的一个,我实际上有15个不同的按钮来完成相同的过程,存储到db实际上是我最后的选择,如果我完全没有解决方案:PIt也取决于你的查询方式。。你的数据库结构如何等等。。然后我建议创建两个数据库。。一个代表你所有的好数据和一个“会话数据库”。如果你想这样做:看看这里,也许你对这篇文章有什么看法