2016-11-19 54 views
0

我每次提交表單時都試圖創建一個新頁面。這將是一個訂單狀態頁面 - 將定期更新。基本上,我希望用戶看到一個表單確認頁面,並且我希望它成爲永久鏈接(他們可以稍後訪問)。如何在表單上創建新頁面提交?

我首先想到的是用變量的URL,就像這樣:

http://www.example.org/member.php?id=123 

,然後調用使用GET

echo $_GET['id']; 

http://www.example.org/member.php將是一個模板的ID,只等幾個細節這是特定於用戶的。 一旦我有這個地方,我可以使用一個簡單的if語句來檢查他們的訂單狀態。

例如,

if ($id === "user_id") { 
    echo "Your order is: Pending"; 
} 

然而,這似乎是一個壞主意,只是爲了安全方面。如果別人猜到了用戶ID,他們可以查看他們的訂單狀態。取而代之,這是我的第一個問題。

如果用戶ID足夠長,這是一種安全的做法嗎?

否則,有什麼其他方法來做到這一點?每次提交表單時創建一個新頁面都是一種糟糕的做法 - 人們可能會發送垃圾郵件,並且有可能有人可以利用此頁面在網站上創建惡意頁面。

有什麼建議嗎?大多數主要零售網站都有訂單確認頁面(想想ebay.com) - 他們如何做?另外,我建議的URL格式是否安全?

+4

呃......一個登錄,帶有你建議的模板?如果用戶已登錄,並且URL中的ID是連接到用戶的訂單,請顯示它。如果沒有,只需重定向或顯示錯誤消息。這樣做沒有登錄是不好的做法,是的。 – junkfoodjunkie

回答

1

最理想的情況是強制用戶在提交表單之前登錄,然後向他們提供他們過去的訂單列表,以便他們檢查狀態,提供訂單的user_id與來自登錄用戶。爲列表中的每個訂單提供一個類似yoursite.com/orders/1的鏈接,然後查詢ID爲1的訂單,其中user_id與登錄的用戶ID相匹配,以確保它們是唯一可以查看的訂單。

如果你不想做任何事情,只是提供一個永久鏈接到狀態頁我會保存一個長期隨機生成的字符串對訂單,並提供給用戶檢查未來如

yoursite.com/orders/wUk1DhfxMh如果你使用一些路由 或yoursite.com/orders.php?code=wUk1DhfxMh,如果你不是一個框架。

查詢數據庫以選擇匹配代碼的順序,確保防止MySQL注入並清理$ _GET輸入。

0

您確定需要製作新頁面嗎? 你可以有一個基本的「確認」頁面(例如http://yoursite.com/order/confirm),其中使用PHP會話來創建一個定製的確認頁面 - 除此之外,如果您創建一個新頁面,則應該在URL和ALSO中使用ID檢查會話ID。 (例如http://yoursite.com/order/confirm/ABsisnEALnsoSK?yyyy=xxxx),然後再檢查用戶是否已登錄。

最後,cymath是異步頁面創建的一個很好的示例;雖然它不完全是你要找的。
編輯:它不是頁面的創建,它就像我之前說過的:一個頁面中的額外參數:一個永久鏈接,只使用PHP。

0

我明白,你有如何使您的應用程序的算法有些懷疑,這裏就是我認爲這種情況:

  1. Insert順序在你的數據庫,獲取插入的ID和把它交給用戶。
  2. 設置用戶將檢查狀態以接收$_GET['id']的頁面,檢查(SELECT)這個ID是否存在於數據庫中。
  3. (如果用戶存在):從你存儲的表 獲取你需要的信息。 (FETCH_ASSOCFETCH_OBJECT
  4. (如果用戶不存在):顯示錯誤。

如果您對編碼有疑問,CodeSchool將在本週末的所有課程中提供免費試用。

如果用戶ID足夠長,這是一種安全的做法嗎?

R:爲了提高交易的安全性,試圖瞭解/學習PDO類,我想如果你聚集了一些好的做法和設計模式,將讓你的代碼,以一個新的水平。請致電PHP's Documentation