簡體   English   中英

在PHP頁面之間傳遞類實例和其他數據

[英]Passing class Instances and other data between pages in PHP

我一直在研究在PHP頁面之間具有持久數據可用的問題。 這尤其適用於已在一頁中設置的對象,以后需要訪問。 看來這比我想象的要困難得多,但是可以用多種方法來完成,盡管它們似乎都很難使用,尤其是當數據變得非常復雜時:

  • 通過$ _GET或$ _POST將數據傳遞到下一頁
  • 將數據復制到數據庫並在下一頁中檢索它
  • 將數據放入會話或cookie
  • 序列化對象並使用相同的參數和值重新創建它

這些似乎都很費力,因為它們主要依賴於必須解構現有數據結構,然后在下一頁重新構建它。 我認為這是為了通過關閉頁面后立即從一頁清除數據並以“干凈的狀態”開始減少PHP服務器的內存需求。

有沒有更直接的方法可以在PHP頁面之間傳遞較大的數據結構?

非常感謝,Kw

我認為這是為了通過關閉后從一頁清除數據來減少PHP服務器的內存需求。

不,這不是因為內存效率問題。 這是因為HTTP協議是無狀態的。 每個請求必須包含實現它所必需的所有信息。

您提出的方案的反例:

  1. 讓我們假設愛麗絲訪問頁面A,創建了一些對象,並且希望它們在頁面B中可用。

  2. 您跟蹤對頁面B的訪問。

    2.1。 但這不是愛麗絲,是鮑勃。 您如何確定要顯示的對象以及從何處獲取對象?

    2.2。 再次 Alice,但是請求從您的1000服務器場到達了另一台計算機。 自然,您沒有原始的PHP對象。 你現在做什么?

如果使用$ _GET或$ _POST,則僅限於非敏感數據,並且會將對象公開給任何用戶。 你不要那樣

Cookie的大小受到限制

Cookie通常限制為4096個字節,並且每個站點最多只能存儲20個Cookie。

在請求之間(對於同一用戶)在對象之間持久保存對象的最佳方法是使用會話。 已經有用於memcached,redis,mysql等的會話保存處理程序。如果需要自定義,也可以編寫自己的會話保存處理程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM