【问题标题】:PHP Session variables in javajava中的PHP会话变量
【发布时间】:2011-07-05 15:40:43
【问题描述】:

在我的服务器-客户端模型中,我将 java 用于客户端,并使用 php5 用于服务器端脚本。

我使用简单的 http 协议进行通信。

在服务器中,我有一些 $SESSION 变量(在 php 中)。我想在我的 java 客户端中访问这些变量。

这怎么可能?

提前致谢。

【问题讨论】:

  • 这是 JavaScript 而不是 Java!
  • 网页开发者怎么会不知道javascript和java的区别?
  • 看...我正在用 java 制作我自己的客户端。 (我没有使用浏览器)
  • @adarshr - 我要的是 JAVA 解决方案... @Richard - 是的,Web 开发人员怎么可能不知道 javascript 和 java 之间的区别?!!他应该知道,因为我知道差异......
  • 您能定义“我们中的大多数人”吗?如果我写“JAVA”,这意味着它是java......虽然我是stackoverflow的新手,但我知道java问题与javascript问题的比率是多少。在我的问题中,我清楚地写了“..I'm using java for client side..”。

标签: java php http session


【解决方案1】:

简单。

<script type="text/javascript">
    var variable = '<?php echo $SESSION["variable_name"];?>';
</script>

【讨论】:

  • 对不起,我没有制作网页。我正在制作自己的 java 客户端。所以你的 javascript 代码对我不起作用。
【解决方案2】:

如果您打算将其发送到客户端,则应使用cookies 而不是会话变量。

【讨论】:

  • 他实际上是在谈论一个java应用程序而不是一个浏览器环境
  • 其实服务器端脚本已经完成了。我已经使用了SESSION变量。所以现在不可能更改所有代码。
  • @JohnP 我从来没有说过他在使用浏览器,考虑到他使用的是 http,他仍然可以使用 cookie。不要假设我在假设什么。
  • @JohnP - 在 java 客户端中,我们也可以处理 cookie。 @Richard - 你是对的
  • @Richard 对不起,我误解了您的回复。并且看到 OP 的评论,他可以在客户端使用 cookie。 @Richard,你能编辑一下你的回复,这样我就可以收回我的反对票了吗?
【解决方案3】:

AFAIK 会话变量是一个服务器端变量,可以通过会话 ID 访问。您必须重构您的应用程序(使 java-client 没有服务器端信息)或手动将它们(变量)从服务器发送到客户端。

【讨论】:

  • 当然,我的意思是纯 java 客户端。不是javascript。
  • 您能否详细说明“AFAIK 会话变量”,或者您可以提供任何相关链接?
  • AFAIK 是一个首字母缩写词,意思是“据我所知”。
  • @Richard Pianka - 谢谢。我认为它需要某种 API 库:P
  • 解释您遇到的问题。也许我们可以找到可行的解决方案。想想你自己:如果远程客户端可以毫无问题地访问服务器上的会话变量,那么你的应用程序中就有一个很大的安全漏洞。
【解决方案4】:

您的 Java 客户端将向服务器发出请求,而服务器将像 Web 服务一样工作,对吧?

如果是这样,请在服务器发送回客户端的 XML/json/任何响应中包含您可能需要的所有/任何 $_SESSION 变量,类似于:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<reply>
  <request>
    <method>getUsers</method>
    <param name="page">1</param>
    <param name="apiKey">API_KEY</param>
    <param name="sessId">SESSION_ID</param>
  </request>
  <response>
    <status>
      <code>0</code>
      <message>OK</message>
    </status>
    <users>
      <!-- Request reply here -->
    </users>
    <session>
      <variable1>$_SESSION['var1']</variable1>
      <!-- Additional session variables you might need on the client here[...] -->
    </session>
  </response>
</reply>

问题是,会话变量是服务器用来跟踪现在哪个客户端正在访问它,并将数据与该特定客户端相关联的东西。如果您需要客户端上的这些信息,也许您可​​以重构应用程序以在客户端上创建此数据并将其传递给服务器,以防服务器需要该数据?

【讨论】:

  • 明白了,非常感谢您理解我的问题(许多人对我的问题投了反对票:()
【解决方案5】:

您唯一需要了解的是会话变量与任何其他 PHP 变量没有区别。
因此,您也必须从 PHP 请求它。
当然,提供带有会话标识符的请求是从先前的调用中获得的。仅此而已,不是火箭科学。

【讨论】:

  • 我明白你的意思,但是“会话变量与任何其他 PHP 变量没有区别。”虽然对当前问题准确,但实际上非常不准确。我相信你知道这一点,但你可能想在你的答案上放一些范围:)
猜你喜欢
  • 2012-08-03
  • 2013-05-01
  • 2011-06-09
  • 2010-09-25
  • 2021-09-02
  • 2012-05-18
  • 2021-12-30
  • 1970-01-01
相关资源
最近更新 更多