2014-04-01 24 views
1

這個問題不言而喻,但有沒有其他方法?

即使這些是最佳實踐,您能分享嗎?

+0

再想一想:您目前的狀況是什麼/您需要具體哪些。是否有PHP實現,比如'$ _POST','$ _GET'等?如果沒有,研究。如果你沒有找到,請再次詢問 – kero

+0

這只是好奇心,我找不到其他方法,但我不知道其中的一半......對我而言$ _SESSION正在工作。 – William

回答

1

這些是向頁面輸入信息最明顯的方式。可以使用除$_GET之外的其他方式解析來自url的輸入,但您爲什麼要這樣做。

此外,您可以使用其他方法。例如,您可以將信息保存在文件或數據庫中,然後在下一頁中讀取,儘管您可能仍需要cookie或url中的一些信息來識別要讀取的信息(會話ID)。所以,雖然嚴格地說你的問題的答案是'不',但我想說的是'是',這些是你常用的方法。

如果是嚴格的那些全局變量,那麼你已經得到了$_REQUEST變量,基本上收集來自$_GET$_POST$_COOKIE在一起的所有值。 $_FILES提供有關上傳文件的信息,這些文件會自動存儲在臨時位置,但實質上,這些文件也會發布到頁面。因此,這些全局變量可幫助您使用與腳本進行通信的最常用方法輕鬆實現。

所有這些都是爲了輸入,順便說一下。您無法通過修改這些$_SUPERGLOBALS將信息發回或轉到下一頁。

+0

謝謝,它涵蓋了很好的答案,雖然我正在尋找別的東西,但現在我知道該看什麼/要求了。傳遞信息的另一種形式是@cartalot [below](http://stackoverflow.com/a/22797817/3347137) – William

-2

PHP中的$ _POST,$ _GET,$ _SESSION和$ _COOKIES是將頁面間傳遞給變量的唯一方法嗎?

有沒有 「最佳實踐」。每種習慣都適合特定的任務。有什麼?

此外,上述所有都只是PHP超全局變量,而不是什麼「辦法」,並cannnot只是自己的「通行證」什麼

另外請注意,你不能傳遞變量的任何地方。變量可能只屬於執行的腳本。雖然你只能傳遞一些字符串類型的值。

+0

舉一些替代的例子:-) – Shawn

0

不,更全局:

$ _REQEUST - 包括$ _GET,$ _ POST,$ _ COOKIE

$ _FILES - 上傳的文件DATAS(如名稱,類型,如)

+0

我會進一步尋找他們。我試過的唯一一個是在我提出的問題旁邊的'_FILES'。 – William

0

你可以在數據庫中存儲一個值,然後用查詢檢索它。 除了我瘦你覆蓋所有人

+0

的答案這是真的,儘管您需要上述方法之一才能鏈接這兩個請求一起! – halfer

+0

這是一個好主意,但我希望有一些即時和不長遠的事情。 – William

1

這真的取決於什麼你正在嘗試做什麼。

  • 您是否傳遞表單或請求數據?那麼GET和POST是你最好的方法。

  • 關於用戶的臨時數據? SESSION是你最好的方法。

  • 永久數據或數據應持續時間超過一次使用 會話?那麼它應該存儲在一個數據庫中,或者在極少數情況下是一個平面文件。

+0

我想要做的是從類文件通過

傳遞一個變量到主頁面,並且我找到適合我的$ _SESSION,但是我想知道是否有另一種方法。 因爲我必須從類返回到<表單動作文件>,並處理錯誤,然後顯示給用戶。 – William

+0

這聽起來像你可能有結構問題。如果不知道程序的結構如何,很難說清楚,但是不需要將該變量添加到僅用於函數的會話中,您應該將該變量作爲參數傳遞給類中的任何函數在你的表單動作腳本中使用。 – Morgan

+0

我基本上做的是,如果類在某些時候返回false,那麼'$ _SESSIO ['name_error'] =「無效名稱」;'或者在其他某處'$ _SESSIO ['name_error'] =「not found」 ;'或者一切正常'$ _SESSIO ['name_error'] =「確定」;'並且它們將它顯示給主頁上的用戶。 我無法做的是在類文件上有一個'$ name_error =「foo」',並在主頁面顯示它而不使用'$ _SESSION'。 這就是爲什麼我問是否有其他方法來搜索並嘗試使用它,但在我看來似乎'$ _SESSION'是最好的方法。 – William

1

所以我想在技術上這是由後覆蓋 - 但會話的選擇 - 它被寫入cookie並因此是完全cookie的依賴 - 是利用其在隱藏的形式通過了「令牌」領域。

通常令牌是一個很長的隨機字符串 - 您檢索並用作會話表的密鑰或ID。在隱藏的表單字段中傳遞,並且在SSL https頁上 - 它完全消除了設置和檢索用戶Cookie會話的需求,這對於需要儘可能廣泛採用的應用程序來說可能是一個很大的優勢(有些人關閉,阻止了Cookie等) )。

+0

我認爲'$ _SESSION'存儲在服務器上,不能被瀏覽器「阻止」。我閱讀了關於隱藏表單字段的一些信息,但是當用戶輸入一些數據並將它們發送到摘要頁面或從摘要頁面返回到表單頁面時,它會應用。 – William

+0

php會話存儲在服務器上,但會話標識符(PHPSESSID)存儲在瀏覽器cookie中。服務器發送並獲取文檔頭中的會話標識。因此,如果瀏覽器Cookie被禁用或用戶cookie存在任何其他問題 - 會話ID將不會被識別,會話將無法使用。 VERSUS以安全的形式發送'令牌' - 與會話ID相同的想法 - 從而消除cookie。 – cartalot

+0

謝謝你的解釋,我會研究更多關於這個,並在任何事情之前測試它。 – William