2011-07-05 28 views
0

我几年没有碰过PHP,并且被要求创建一个wordpress插件。我试图找出“正确”的方式来做到以下几点:访问前一页加载的变量?

page1.php 
--------- 
some_plugin(array(
    'option1' => 'some_data', 
    'option2' => 'http://do_not_expose_to_client/' 
}); 

generates 
--------- 
<script language="text/javascript"> 
$.get('/page2.php', { data_set : 1 }); 
</script> 

page2.php 
--------- 
var options = get_options_from_page_1($_GET['data_set']); 

有意义,我希望?基本上我想从page1 - > page2传递一个PHP数组,并且正在寻找一个干净的机制来做到这一点。我知道我可以将数据放入会话变量中,但这似乎很诡异,如果在页面上有多个此插件实例,我需要开始跟踪实例ID等。

+2

在网站上坚持使用状态一切都很棘手,因为网络的设计基本上是无状态的。会话只是产生可以持久的“状态”的最简单/最干净的方法。 –

+0

@Marc B - 我意识到,我正在寻找一个相对干净的解决方案 - 一个php库或whatnot - 在那里我可以做一些像'store_data_in_db(array)'和'get_data_from_db(id)' –

+0

$ _SESSION [“您的变量”] =值; – Eamorr

回答

3

这基本上是一个PHP“问题”。在你的例子中,每个脚本都在它自己的进程中执行,并且这些脚本不共享数据。

一个简单的方法是使用$_SESSION,你是对的,你必须自己管理数据。但是你必须使用其他方法(例如通过数据库)。那么我认为会议非常方便。

另一种方法是加密数据,将其与请求一起传递,然后再解密。

+0

我不会说这是一个问题。这或多或少是我见过的每个Web界面所做的 - 包括多个Java平台,Python和Perl。只有很多方法才能使状态持续存在 - 无论是客户端匹配的服务器上的令牌(会话),还是Cookie,还是发出GET/POST/PUT/DELETE请求。 – cwallenpoole

+0

是的,这并不意味着它“硬”。把它放在引号中来减轻这一点。我认为从OP的角度来看,找到解决方案是一个“问题”。毫无疑问,这是可以解决的。 – hakre

0

只有几种方法从一个页面获取变量传递给另一:

  • 表格变量 - GET/POST /(和在较小程度上)PUT/DELETE
  • 饼干
  • 会话
  • HTTP认证报头( 请勿使用这些FO R在页面之间传输信息。它们仅用于认证)。

这听起来像你要么需要使用GET(添加?<varname>=<value>(或&<name>=<value>如果附加到其他变量),以您的网址 - 它看起来像你接近获得下来),否则会需要使用Cookies或(亲自,我认为它更好)SESSION。