2012-08-26 76 views
1

我對PHP和stackoverflow相當新,但我知道的基礎知識,我可以很快地撿起東西。存儲表單數據

我有一個應用程序記住,涉及提供用戶組的複選框和單選按鈕與每個組在單獨的頁面上,並從菜單抵達。

例如 國籍 辦事處名稱 收入檔案

他們不必從每個組中選擇,當他們做出選擇/ s的他們可以查詢基於他們的選擇一個數據庫,然後顯示數據。我希望他們能夠通過重新訪問任何選擇頁面然後重新查詢數據庫來調整他們的選擇。

當他們通過這些選擇表格進展時,我該如何最好地存儲他們的選擇。我是否使用cookie或會話變量?我想過將他們的選擇存儲在數據庫中,但這可能會變得複雜。

我只需要在這個階段的指針。

感謝

賈斯汀

回答

0

我會以如下方式設計的:

創建具有任何和所有你想了解他們的數據形式。編寫PHP,這樣如果你提供用戶的ID(很快就會得到),如果從數據庫查詢他們的記錄並顯示他們已經保存的所有內容。他們可以進行他們喜歡的任何更改並提交表單。這會更新他們在數據庫中的記錄,並在他們下次查看頁面時顯示新信息。

當表單被提交時,它應該首先檢查它們是否已經存在 - 如果是,更新記錄 - 如果沒有,則插入它。你可以在PHP中做到這一點,但你也可以通過一個漂亮的mysql語句來做到這一點(插入...重複密鑰更新)。

當用戶創建一個帳戶時,他們的登錄名/用戶名被綁定到數據庫中的唯一ID。當他們驗證了這一點(通過再次登錄)該ID被傳遞給會話變量,以便您可以隨時在數據庫中輕鬆訪問他們的數據。

最後,我建議,當你這樣做,用準備好的發言中獲取數據,並從數據庫中,我會建議PDO自己,這是不錯的,它可以是跨數據庫兼容等。如果你正在尋找安全性,我建議不要直接存儲密碼,而是將其密碼保存並保留一個經過驗證的散列。將一個半唯一標記直接插入蝙蝠可能是一個好主意,這樣如果他們忘記了密碼,您可以將它發送給他們以通過鏈接返回進行驗證。另外,將用戶名/登錄名存儲在cookie中可以,但從不在其中存儲密碼。事實上,千萬不要在會話中存儲密碼 - 一旦它們得到驗證,只需將存儲在某個標誌中,然後檢查該標誌。

編輯:

如果能夠給用戶在過程開始分配一個唯一的ID(如說正從用戶的電子郵件),那麼你可以給他們一個唯一的ID(或赫克,在捏,使用他們的電子郵件地址),那麼你可以從一開始就插入數據到最後一行。 Mysql提供insert ... on duplicate key update語法。這意味着您可以將數據插入傳遞每個頁面的行中,隨時參閱它並作爲獎勵,因爲您使用的是像他們的電子郵件地址這樣的唯一鍵,這將使他們與數據綁定,他們能夠輸入一些數據,離開您的網站,稍後再回來並填寫其餘的內容。

+0

感謝您的回覆,很快。也許我不像我本來那麼清楚。要查詢的數據是隻讀的,複選框/單選框僅用於構建查詢字符串以檢索數據。沒有關於用戶的信息被存儲。 –

+0

@JustinOakley我不知道我跟着。您正在從數據庫構建數據以查找有關用戶的信息,並且您正在從數據庫中抽取數據?什麼是完全的查詢?這是一個多頁面表單,你最終要提交嗎? – Fluffeh

+0

是的,這是一個多頁的表單,我想在最後提交嗎?提交只是爲了創建sql字符串並顯示數據,而不是寫入數據庫。我也希望用戶能夠在提交之前或之後拉出任何一個或多個這些頁面以更改選擇。我可以使用顯示錶單頁面的機制,重新訪問表單頁面並查詢和顯示數據。謝謝 –