2012-08-17 119 views
-1

我想知道如何檢查登錄是否存在於我的數據庫中。此時此刻,我正在使用mysql_num_rows(),但兩小時前我意識到這對我的網站並不安全,因爲如果我註冊暱稱:保羅和我的朋友註冊暱稱:PauL,我的網站讓我們註冊這些暱稱......我不知道如何檢查字的長度等於同一個詞只是不同的字母...php註冊腳本相同的暱稱

+0

'單詞是相同的單詞只是不同的字母'這是什麼意思? – xdazz 2012-08-17 13:38:29

+1

我認爲他的意思是不同的情況下,沒有不同的信件 – andrewsi 2012-08-17 13:39:26

回答

0
SELECT whatever FROM users WHERE UCASE(username) = 'USERNAMEINUPPERCASE'; 

基本上,如果你使用UCASE()功能,你轉換(用於查詢的目的)的用戶名在表中以大寫字母,然後與您想要的大寫版本進行比較,使您的查詢不區分大小寫。

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

+0

Thanx夥計,它幫助! – user1607019 2012-08-17 14:02:10

0

之前做對比,使用功能strtolower()兩個變量

+0

我試過了...但是後來我用SELECT搜索暱稱,我沒有找到暱稱,所以我無法用巡迴功能檢查它... – user1607019 2012-08-17 13:57:16

+0

首先從查詢中拉出暱稱,然後比較結果。您需要兩個查詢才能完成註冊。第一個查詢是用於檢查名稱的「SELECT」,第二個查詢是用於添加已驗證(並且安全)的新用戶名的「INSERT INTO」。 – Sablefoste 2012-08-17 14:13:29

0

可以定義在SELECT查詢

SELECT * FROM `table` WHERE LOWER(`Nickname`) = LOWER($nickname) 

但是取決於你整理*_ci不區分大小寫或區分大小寫的_cs。如果你有*_ci你沒有什麼可擔心的。

0

首先,用戶名應該是唯一的,不區分大小寫;請在數據庫中將用戶名字段Collat​​ion設置爲utf8_unicode_ci或utf8_general_ci。

然後運行您當前的查詢。

SELECT * FROM users WHERE username = '$_var' 
1

假設您指的是大寫和小寫的混合。例如,paul,Paul,PAUL,pAUL應該在數據庫中視爲單一名稱。

然後,你應該使用這個SQL查詢來檢查,如果該名稱已存在:

SELECT * FROM table1 WHERE LOWER(table1.nickname) = LOWER('PaUl') 

這將在列「暱稱」數據轉換爲小寫和轉換「保羅」執行降低前平等檢查。