您好,登錄后才能下訂單哦!
怎么在php中使用mysql解決大量用戶登錄問題?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
php是一個嵌套的縮寫名稱,是英文超級文本預(yù)處理語言,它的語法混合了C、Java、Perl以及php自創(chuàng)新的語法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因為php是開源的,從而使得php經(jīng)久不衰。
表結(jié)構(gòu)如下:
登錄名與ID表,根據(jù)login_hash分100張表
復(fù)制代碼 代碼如下:
CREATE TABLE user_login(
login_name VARCHAR() 用戶登錄名,可以是“登錄名”、“郵箱”或“手機號”登錄
login_hash BIGINT 用戶登錄名的HASH碼
user_id BIGINT 用戶ID
);
CREATE TABLE user_login0 LIKE user_login;
CREATE TABLE user_login1 LIKE user_login;
… …
CREATE TABLE user_login100 LIKE user_login;
ID與用戶信息表,根據(jù)user_id分100張表
CREATE TABLE user_info(
user_id BIGINT 用戶ID
login_pwd CHAR() 用戶登錄密碼
… … 其他信息,家庭住址、手機號、性別等等
);
CREATE TABLE user_info0 LIKE user_info;
CREATE TABLE user_info1 LIKE user_info;
… …
CREATE TABLE user_info2 LIKE user_info;
業(yè)務(wù)實現(xiàn)邏輯:
依賴服務(wù)器:實現(xiàn)一個自增ID的服務(wù)(相當(dāng)于oracle的sequence),也可以自己實現(xiàn)(用PHP+MySQL或者用C實現(xiàn)都可以)。目的是可以 從這個服務(wù)中取ID,每次取的ID數(shù)都是在上次基礎(chǔ)上+1,和MySQL的autoincrement很像,只是不能在表內(nèi)部自增。
注冊流程:
1)驗證用戶名、郵箱、手機號、密碼等格式。省略…
2)從服務(wù)中取一個ID,假設(shè)是115。
3)如果用戶的登錄類型是郵箱(如:$loginName='songhuan@zixue.it'),則在登錄名前加上前綴登錄名結(jié)果(如:$loginName='mail_songhuan@zixue.it')
4)求登錄名的HASH值:$loginHash=md5($loginName); 對md5值hash,可以求asc碼,或者用自己的算法,最后得出$loginHash=16位或32位的整數(shù)
5)$tableName = 'user_login' . ($loginHash%100),如果獲取user_login表名,假如結(jié)果為user_login88。
$tableName = 'user_info' . (115%100),如果獲取user_info表名。
6)執(zhí)行SQL:
復(fù)制代碼 代碼如下:
INSERT INTO user_login88 (login_name, login_hash, user_id) VALUES ('songhuan@zixue.it', 183239324323, 1);
INSERT INTO user_info15 (user_id, login_pwd) VALUES (115, 'afieflefiefladifadfadfe');
登錄流程:
1)如果用戶的登錄類型是郵箱(如:$loginName='songhuan@zixue.it'),則在登錄名前加上前綴登錄名結(jié)果(如:$loginName='mail_songhuan@zixue.it')
2)
復(fù)制代碼 代碼如下:
$loginHash=ord(md5($loginName));
3)
復(fù)制代碼 代碼如下:
$tableName = 'user_login' . ($loginHash%100);
假如結(jié)果為user_login88
4)執(zhí)行SQL:
復(fù)制代碼 代碼如下:
SELECT id FROM user_login88 WHERE login_hash = $loginHash;
如果查詢不到數(shù)據(jù),則登錄名不存在
5)如果能獲取到,id=115,則
復(fù)制代碼 代碼如下:
$tableName = 'user_info'.(115%100);
SELECT id, pwd … FROM user_info15 WHERE id = 115;
6)匹配密碼,如果密碼不相等,返回false
7)如果密碼相等,將用戶ID加密放入COOKIE,將用戶信息存入Memcache.
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。