2011-07-05 27 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。