2014-03-12 87 views
3

我想使用2個數據庫表(作者和編輯)登錄腳本。我會發布他們的例子: 表1:作者使用2個數據庫表登錄php登錄

|id|username|password| 
| 1| user | xyz | 

表2:編輯

|id|username|password| 
| 1| editor | abcd | 

我想要使用這些2桌的單點登錄。我試圖使用:

SELECT * FROM authors, editors WHERE username='mysql_real_escape_string($username)' AND password='mysql_real_escape_string($password)' 

但它沒有工作。 有沒有另一種方法可以爲我工作? 謝謝。

+1

明文密碼?大量使用過時的'mysql_query'?你在這裏設置自己的災難。像[PHP正確的方式](http://phptherightway.com/)這樣的指南概述了實現這樣的事情時的最佳實踐。 – tadman

回答

2

你不應該這樣做,使用一個表中的一個roleid或類似的東西。這將最終破裂。

如果你真的想這樣做,無論如何,我會建議先在作者的表上做一個選擇。沒有結果?查詢編輯器表。

但正如我所說,不要這樣做。

+0

是的。擁有與編輯器或作者配置文件相關的「用戶」表是實現此目的的最佳方式。 – tadman

1

嘗試從一個表或從其他

SELECT * FROM authors a, editors b 
WHERE (a.username='mysql_real_escape_string($username)' AND a.password='mysql_real_escape_string($password)') 
OR (b.username='mysql_real_escape_string($username)' AND b.password='mysql_real_escape_string($password)') 

選擇,但我不知道這是否會給你你所期望的。

至於側面說明我會加密我的密碼,並使用準備statments避免要麼PDOmysqlimysql injection風險,MySQL的功能已被棄用,雖然

+0

我不確定在這裏加入是個好主意。這是兩個疑問。 – tadman

+0

是的,這是我的想法,事實上我說它可能不會給他他所期望的,但我不認爲其他方式爲單個查詢時,他們應該是兩個 – Fabio

+0

運行查詢A,然後如果沒有匹配,查詢B.這整個設計需要被拋棄,但它有缺陷,更不用說可怕的不安全了。用戶身份驗證和配置文件信息是不同的問題 – tadman

1

你可以試試下面的

"select * from(select * from authors union all select * from editors) a 
where username = " . "'" . mysql_real_escape_string($username) . "'"; 

設我知道它是怎麼回事。 快樂編碼