【问题标题】:PHP Store valuesPHP 存储值
【发布时间】:2011-11-14 16:12:50
【问题描述】:

我有一个 php 应用程序不断地从服务器获取 x 和 y 位置。根据 x 和 y 的值,它将图像放置在屏幕上。该页面每 10 秒不断刷新一次。我想将之前获得的x和y值(刷新前)保存到x1和y1中,然后将当前获得的值存储在x和y中(刷新后),这样我就可以计算x1-x和y1-y了。

<?php
session_start();  
if(isset($_SESSION['x1']))
    $_SESSION['x1'] = $x;
else
    $_SESSION['x1'] = 0;

$x = //Some method of fetching the x position from server
?>

上述代码的问题是,在每次刷新期间,x1 的值都会被当前 x 替换,即 x1 变为等于 x。如何让 x1 保持其价值。

【问题讨论】:

  • 您能更好地解释您要完成的工作吗?您从哪个服务器获得 x/y 位置?您是通过 AJAX 调用此脚本吗?你希望它输出什么?

标签: php session session-variables


【解决方案1】:

最明显的解决方案:在请求的结束处将值放入会话中。

session_start();  
if(!isset($_SESSION['x1']))
    $_SESSION['x1'] = 0;

// your code here

$_SESSION['x1'] = $x;
exit; // Not really, just to clarify, that the script should end here
      // or at least its not that important, what comes next

【讨论】:

  • 要基于 KingCrunch 的答案,您可能需要为该函数注册一个关闭函数 save_session() { // code } register_shutdown_function(save_session);
  • 啊……这太明显了……我想我需要休息一下……谢谢你的帮助和支持
【解决方案2】:

x1 应该从会话中的每个调用中保留它的值。你会立即用我在这里看到的 $x 覆盖它。

如果您要发布您的 $x 变量,请将 $x 与 $_SESSION 进行比较,并在覆盖之前查看这两个值。在写入之前输出 $_SESSION['x1']。在覆盖之前,您应该在其中看到以前的值。

【讨论】:

    【解决方案3】:

    您需要发布更多代码。根据您所拥有的,我不知道这如何实现您想要的。假设 $x 的值为 4。运行查询,$x 现在为 7。然后将 $_SESSION['$x1'] 的值设置为 7 并保存。但是在刷新之后,您将拉取 $x1 的值,即 7,并立即重置为 $x。为什么?它已经有了你想要的值 7,也就是之前的 $x 值。然后,您要将 $x(现在为 7)设置为您从服务器中提取的任何数字,并且之前的值将永远丢失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-02
      • 2020-09-15
      • 1970-01-01
      • 2022-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多