使用redis完成註冊和登入
使用redis完成註冊和登入
示例圖:
前提是伺服器安裝了php-redis擴充套件,即phpnfo裡有redis模組
1 表的設計
和mysql資料庫進行對比 redis是鍵值對的儲存方式
例如 使用者表:
每個使用者儲存兩條資訊 因為註冊時要檢視一個使用者名稱是否存在 即根據使用者名稱檢視是否含有對應的userid
user:userid:1:username admin
user:username:admin:userid 1
index.php:
<div id="navbar">
<a href="index.php">主頁</a> | <a href="timeline.php">熱點</a> | <a href="logout.php">退出</a>
</div>
<form method="POST" action="register.php">
<table>
<tr>
<td>使用者名稱</td><td><input type="text" name="username"></td>
</tr>
<tr>
<td>密碼</td><td><input type="password" name="password"></td>
</tr>
<tr>
<td>密碼(again)</td><td><input type="password" name="repassword"></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" name="doit" value="註冊"></td></tr>
</table>
</form>
register.php:
<?php
//自增userid相當於mysql的自增主鍵
//global:userid;
//判斷cookie是否存在
if($_COOKIE['userid']&&$_COOKIE['username']){
header('location:home.php');
}
$username = $_POST['username'];
$password = $_POST['password'];
$repassword = $_POST['repassword'];
if(!$username){
exit('<script>alert("使用者名稱不得為空");history.back()</script>');
}
if(!$password){
exit('<script>alert("密碼不得為空");history.back()</script>');
}
if($password!=$repassword){
exit('<script>alert("兩次密碼不一致");history.back()</script>');
}
$redis = new \Redis();
$redis->connect('127.0.0.1',6379);
if($redis->get('user:username:'.$username.':userid')){
exit('<script>alert("使用者名稱已存在");history.back()</script>');
}
//寫入資料庫
$userid = $redis->incr('global:userid');
$redis->set('user:userid:'.$userid.':username',$username);
$redis->set('user:userid:'.$userid.':password',$password);
$redis->set('user:username:'.$username.':userid',$userid);
?>
login.php:
<?php
if($_COOKIE['userid']&&$_COOKIE['username']){
header('location:home.php');
}
$username = $_POST['username'];
$password = $_POST['password'];
//過濾資料
if(!$username){
exit('<script>alert("使用者名稱不得為空");history.back()</script>');
}
if(!$password){
exit('<script>alert("密碼不得為空");history.back()</script>');
}
//驗證使用者名稱和密碼
$redis = new \Redis();
$redis->connect('127.0.0.1',6379);
$ruserid = $redis->get('user:username:'.$username.':userid'); //從資料庫查使用者id
$rusername = $redis->get('user:userid:'.$ruserid.':username'); //根據id查使用者名稱
$ruserpass = $redis->get('user:userid:'.$ruserid.':password'); //根據id查密碼
if(!$ruserid||($password!=$ruserpass)){
exit('<script>alert("使用者名稱或密碼錯誤");history.back()</script>');
}
//生成cookie
setcookie('userid',$ruserid);
setcookie('username',$rusername);
header('location:home.php');
?>
logout.php:
<?php
//清除cookie
setcookie('userid',null);
setcookie('username',null);
header('location:home.php');
?>
home.php:
<?php
if(!$_COOKIE['userid']||!$_COOKIE['username']){
header('location:index.php');
}
相關文章
- laravel使用者登入註冊Laravel
- vue+elementUI完成註冊及登陸VueUI
- 使用者註冊/登入模組實踐
- javaWeb登入註冊頁面JavaWeb
- 個人作業登入+註冊
- Laravel 實現 passport 使用者註冊登入LaravelPassport
- 10.註冊和登入功能實現(3)—— 註冊資料寫入資料庫資料庫
- js登入與註冊驗證JS
- APP「登入註冊模組」詳解APP
- "留拍"-註冊/登入詳解
- Spartacus 註冊和登入頁面的實現細節
- Laravel 註冊登入 user Model 使用 uuid 的坑LaravelUI
- 直播原始碼網站,新使用者登入時的註冊頁面和登入頁面原始碼網站
- Java實現--登入和註冊案例(把使用者資訊存進集合)Java
- vue登入註冊,帶token驗證Vue
- bootstrap4登入註冊頁面boot
- Luffy /4/ 多方式登入介面&登入註冊前端頁面前端
- PHP+MySQL實現使用者登入註冊API介面PHPMySqlAPI
- node+ajax+mysql實現登入註冊MySql
- go-zero學習之註冊登入Go
- jsp+servlet登入註冊頁面JSServlet
- 使用者登陸註冊【JDBC版】JDBC
- HTML基礎實現簡單的註冊和登入頁面HTML
- 使用Forms Authentication實現使用者註冊、登入 (一)基礎知識ORM
- swing 實現使用者登入註冊介面(不使用資料庫)資料庫
- express+vue+mongodb+session 實現註冊登入ExpressVueMongoDBSession
- 實現註冊登入你真的會了嗎
- Laravel5.8 入門系列二,快速實現使用者註冊登入功能Laravel
- Android使用者登入功能完成Android
- 快速搭建Node.js(Express)使用者註冊、登入以及授權Node.jsExpress
- Django2 Web 實戰02-使用者註冊登入退出DjangoWeb
- Struts2+AJAX+JQuery 實現使用者登入與註冊功能。jQuery
- node+express+mongDB實現簡單登入註冊Express
- 【Python】Django--認證系統-登入註冊PythonDjango
- 現在,ChatGPT不註冊登入也能免費用了ChatGPT
- 登入介面完成(十五)
- 創新實訓(九) 註冊、登入、找回密碼功能和個人資訊管理密碼
- javaWeb 簡單註冊登入(含資料庫連線) -- (四) 使用者登入請求與響應JavaWeb資料庫