我新的PHP和MYSQL,試圖建立一個網站,用戶可以用它來輸入數據到數據庫中。什麼我想要做的將是各銀行和他們provide.For例如各種服務的數據庫爲例,從花旗銀行用戶創建我的網站上的賬戶,他將進入他的登錄ID,密碼,電子郵件&名稱他的銀行(在這種情況下將是花旗銀行)。驗證後登錄用戶,並給他們有限的權利,以數據庫
成功創建賬戶並登錄後,他將成爲花旗銀行的「管理員」賬戶,擁有創建,刪除,插入&查看來自花旗銀行的所有數據。他還能夠進一步創建&刪除插座,並創建/刪除該插座的SubUser帳戶。SubUser帳戶將擁有管理員帳戶擁有的所有權利減去創建更多SubUsers的權利,但限制爲只有Outlet負責。管理員和子賬戶都將通過網站登錄。
我列出了下來,我覺得賬戶將所需的權限:
Rights to database
SELECT,INSERT,UPDATE,DELETE,(JOIN?)
我目前思考下表執行管理員帳戶的:
Admin
+----------+-----------+------------+------------+
| BankID | BankName | UserName | Password |
+----------+-----------+------------+------------+
| 1 | Citibank | CitiAdmin | PassCiti |
| 2 | StanChart | StanAdmin | PassStan |
| 3 | HSBC | HSBCAdmin | PassHSBC |
+----------+-----------+------------+------------+
凡BankID將型系列,而BANKNAME,用戶名和密碼會被用戶在創建他的account.The我之所以不包含BankID和BANKNAME,另一個包含用戶名一個上表分割成兩個表進入&密碼將是易於使用的,因爲我覺得分裂它是不必要的,並且過分正常化它。
雖然下表是對Subuser帳戶:
SubUsers
+------+------------+--------------+-------------+
| ID | OutletID | Name | Password |
+------+------------+--------------+-------------+
| 1 | 1 | CitiSub1 | PassSub1 |
| 2 | 1 | CitiSub2 | PassSub2 |
| 3 | 2 | StanSub1 | PassSub1 |
| 4 | 2 | StanSub2 | PassSub2 |
| 5 | 3 | HSBCSub1 | PassSub1 |
| 6 | 4 | HSBCSub2 | PassSub2 |
+------+------------+--------------+-------------+
通過這樣做,當用戶登錄時,我會得到$ _POST [用戶]和$ POST [通]和匹配,如果userentry對從查詢
$query="SELECT Username AND Password FROM Admin AND SubUsers";
,如果有匹配,用戶將登錄in.By這樣做,我能夠實現驗證的第一級只有註冊用戶都能夠訪問得出的數據數據庫。
但是,我將如何限制對管理員帳戶和SubUser帳戶的訪問。管理員帳戶將只能訪問與他的銀行有關的數據,並且SubUser帳戶將只能訪問與他有關的數據出口。
我使用PHP會議認爲或許大概通過改變從
$查詢登錄查詢=「選擇用戶名和密碼admin和SubUsers」登錄時用戶記錄數據;
查詢首先從Admin中選擇用戶名和密碼,並通過它運行$ _POST [User]和$ _POST [Pass],如果沒有匹配,它將從SubUser中繪製用戶名和密碼,然後重複進程,並將結果記錄到會話中,具體取決於Admin表或SubUser表中是否發生匹配。
但是,這樣做只會改變提供給在登錄用戶的網頁,而不是他們的實際訪問數據庫本身。我能想到的使用這種方法的最接近的解決方案是爲用戶創建一組全新的網頁,具體取決於用戶是Admin還是SubUser,我寧願不這樣做,因爲我仍然是編程新手,並且越來越多網頁數量只會增加將不可避免地出現的錯誤數量。
是否有任何其他方法限制用戶訪問數據庫,或其他解決方案來優化我想要做的事情?
我看過How to configure phpMyAdmin for multiple users - each with access to their database only,但對我來說有點太技術了,似乎是在處理用戶對數據庫而不是表格的訪問。
任何意見/幫助/指導將非常感激。
您只需提供MySQL的託管爲您的客戶,這樣,他們將直接連接自己的應用程序到你的MySQL服務器,或者是你的客戶*你*應用程序,它反過來又是連接到你的MySQL服務器的唯一接口?我懷疑後者,但如果是這種情況,那麼你的客戶不應該能夠指定他們自己的SQL,並且你可以在應用層實現你的訪問控制。 – eggyal
@eggyal客戶正在與我的應用程序進行交互,然後該應用程序將連接到我的MYSQL服務器。我假設「應用程序」是指用戶將登錄到的網站。我可以舉一些關於如何在應用程序層實現訪問控制的例子嗎?還有,您的客戶指定他們自己的SQL是什麼意思?如果它有助於澄清事情,他們將登錄的網站將只包含表單,他們將使用這些表單將數據輸入到我的數據庫中。 –
對,所以通過「*在應用層實現訪問控制*」我的意思是你的網站將識別用戶是誰,只發出影響其記錄的數據庫命令。 – eggyal