2010-05-10 16 views
0

我第一次需要連接來自兩個表的信息,並且非常緊張任何建議第一。MySQL/PHP:如何將登錄的用戶標識插入到另一個表中,該表正在從用戶輸入的表單中收集數據

基本上,我建立一個安全的網站,由授權用戶訪問。我有我的登錄表user_id,用戶名,密碼

一旦用戶在網站上,他們可以選擇將數據輸入到另一個稱爲輸入的表中。此時此表僅捕獲輸入的信息,而不是輸入者的user_id或用戶名。

我希望表單能夠從登錄表中輸入user_id和/或用戶名到輸入表中。

請有人可以通過這個過程說說我嗎?

我確定一旦修改完畢,我就可以使用表格來允許登錄用戶訪問他或她輸入的信息,這是否正確?

非常感謝

回答

1

首先,不要將user_id或username放入表單中。任何人都可以更改表單(是的,甚至隱藏的字段),以便他們可以更改用戶名或用戶ID。使用SESSION variable來存儲用戶名和/或用戶ID。

你是怎麼設計你的餐桌的?隨着兩個表,你可以做的伎倆:

登錄(用戶標識,用戶名,密碼) 輸入(用戶標識,評論)

在頁面處理的登錄表單後,登錄是成功的,你把用戶名在SESSION中。 然後在處理輸入表單的頁面上,您只需使用SESSION中的UserID在輸入中執行INSERT。

再後來顯示輸入的頁面上,你可以SELECT l.USERNAME, i.COMMENTS WHERE l.USERID = i.USERID等等等等

+0

謝謝Konerak, 今天我感覺很厚。我怎樣才能從會話中將INSERT插入到我的表單中。我曾嘗試將它作爲我的表中的字段: ​​BODYSHOP名稱: ​​<輸入名稱= 「bodyshop_name」 值=「」只讀= 「只讀」/> ​​所有者名稱: ​​ 但我或者使用了錯誤的輸入元件或已經完全錯過了你的觀點,很抱歉如此愚蠢 – Lisa 2010-05-10 14:25:31

+0

哦,不,不要輸出ID到表單 - 這將允許用戶修改該值,導致潛在的安全漏洞。只需使用php-腳本解析表單,而不是僅僅處理$ _POST,使用$ _SESSION作爲用戶名。 – Konerak 2010-05-10 16:38:24

1

由於Konerak說,你不能對用戶提交的數據中繼。您之前對此用戶進行了身份驗證,您當時知道用戶名和該用戶名是否有效 - 在大多數應用程序中,一位優秀的開發人員將存儲這些事實 - 因爲您需要他們執行任何後續授權。

所以你就這樣做:

INSERT INTO input (comment, date, user) 
VALUES ('" . mysql_real_escape_string($_POST['comment'] . "', 
NOW(), '" . mysql_real_escape_string($_SESSION['authenticated_user']) . "'); 

(NB如果您正在使用mod_auth_mysql或類似,其中認證通過服務器hadneld,那麼認證的用戶名包含在$ _ SERVER [「PHP_AUTH_USER」 ])。

C.

相關問題