在服务器(而不是客户端)上设置并获取PHP会话
我有一个问题,在很大程度上依赖于会话来获得不同计算机的实时更新。下面是一个场景: [计算机A]管理页面: 若点击按钮,特定文本将显示在网站的每一页上,无论是谁的计算机访问它 [计算机B]客户端页面: 我必须看到我的网页上的文本实时,而不是加载它每当管理员点击按钮 这是我的密码: 管理页面:Admin.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;
$("#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也取决于你的查询方式。。你的数据库结构如何等等。。然后我建议创建两个数据库。。一个代表你所有的好数据和一个“会话数据库”。如果你想这样做:看看这里,也许你对这篇文章有什么看法