php 登陆代码,php实现用户登录与注销的代码示例

本篇文章给大家带来的内容是关于php实现用户登录与注销的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

之前虽然写过登录的功能,但是注销还没有认真的看过。特此记录

当点击登录时,把用户账号信息以变量的形式存在定义的作用域(session)。session代表一次会话,只要你不关闭当前浏览器他的值就会存在,默认20分钟左右。// BisAccount变量名, $ret用户账号信息 ,赋值bis作用域

session(‘BisAccount’, $ret, ‘bis’);

// 删除 bis作用域

session( null,‘bis’);

//取值 在bis作用域,名为BisAccount的值

session(‘BisAccount’, ‘’, ‘bis’);

f722c114d2d7117f0db5ecc2e6909594.png

Login

//如果是post请求,即从登录页面过来的数据 则判断用户名和密码是否正确

账号密码与随机生成的数字拼接,使用MD5加密

//如果不是post,判断session中是否有登录信息

有 跳转到登录后的页面

没有 跳转到登录页面class Login extends Controller{//登录

public function index()

{

if (request()->isPost()) {

$data = input('post.');

$ret = model('BisAccount')->get(['username'=>$data['username']]);

if(empty($ret) || $ret->status != 1){

$this->error('该用户不存在或者未审核通过');

}

$pass = $data['password'];

$ran = $ret['code'];

if(md5($pass."".$ran) != $ret['password']){

$this->error('密码错误');

}

model('BisAccount')->updateById(['last_login_time'=>time()],$ret->id);

//session保存用户信息 赋值bis作用域

session('BisAccount', $ret, 'bis');

return $this->success('登录成功',url('Index/index'));

} else {

$account = session('BisAccount','','bis');

if(!empty($account) && $account->id){

return $this->redirect(url('index/index'));

}

return $this->fetch();

}

}

//注销

public function logout(){

session( null,'bis');

$this->redirect(url('login/index'));

}}

登录后的页面

a1323491b33004a4cc3f363257b1f6a5.png

Base

判断session中是否有BisAccount

有,说明登录状态

没有,重定向到登录页面class Base extends Controller{

public $account;

public function _initialize() {

// 判定用户是否登录

$isLogin = $this->isLogin();

if(!$isLogin) {

return $this->redirect(url('login/index'));

}

}

//判定是否登录

public function isLogin() {

// 获取sesssion

$user = $this->getLoginUser();

if($user && $user->id) {

return true;

}

return false;

}

public function getLoginUser() {

if(!$this->account) {

$this->account = session('BisAccount', '', 'bis');

}

return $this->account;

}}

Index

主页 继承自 Base 。如果账号注销后,再次访问index/index,则会走Base中_initialize初始化方法,

判断bis作用域中是否有BisAccount从而跳转到登录页面,而不会访问到登录后的页面。

登录后,访问index/index 与 login/index 返回相同的页面。class Index extends Base{

public function index()

{

return $this->fetch('');

}

}

tip: 如果存入的Session名称为A,取Session时也要取A//存

session(‘BisAccount’, $ret, ‘bis’);

//取

session(‘BisAccount’, ‘’, ‘bis’);

都是BisAccount

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 PHP + MySQL 用户注册登录验证的示例代码: 注册页面(register.php) ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>用户注册</title> </head> <body> <h2>用户注册</h2> <form action="register.php" method="post"> <label for="username">用户名:</label> <input type="text" name="username" id="username"><br> <label for="password">密码:</label> <input type="password" name="password" id="password"><br> <label for="confirm_password">确认密码:</label> <input type="password" name="confirm_password" id="confirm_password"><br> <input type="submit" value="注册"> </form> </body> </html> ``` register.php 处理用户提交的注册信息 ```php <?php // 连接 MySQL 数据库 $mysqli = new mysqli('localhost', 'root', 'password', 'test'); if ($mysqli->connect_errno) { echo '连接 MySQL 失败:' . $mysqli->connect_error; exit(); } // 处理用户提交的注册信息 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 获取表单提交的数据 $username = $_POST['username']; $password = $_POST['password']; $confirm_password = $_POST['confirm_password']; // 验证密码是否相等 if ($password !== $confirm_password) { echo '两次输入的密码不相等'; exit(); } // 查询用户名是否已经存在 $sql = "SELECT * FROM users WHERE username='$username'"; $result = $mysqli->query($sql); if ($result->num_rows > 0) { echo '用户名已经存在'; exit(); } // 插入新用户数据到数据库 $hashed_password = password_hash($password, PASSWORD_DEFAULT); $sql = "INSERT INTO users (username, password) VALUES ('$username', '$hashed_password')"; if ($mysqli->query($sql)) { echo '注册成功'; } else { echo '注册失败:' . $mysqli->error; } } // 关闭数据库连接 $mysqli->close(); ``` 登录页面(login.php) ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>用户登录</title> </head> <body> <h2>用户登录</h2> <form action="login.php" method="post"> <label for="username">用户名:</label> <input type="text" name="username" id="username"><br> <label for="password">密码:</label> <input type="password" name="password" id="password"><br> <input type="submit" value="登录"> </form> </body> </html> ``` login.php 处理用户提交的登录信息 ```php <?php // 启动会话 session_start(); // 连接 MySQL 数据库 $mysqli = new mysqli('localhost', 'root', 'password', 'test'); if ($mysqli->connect_errno) { echo '连接 MySQL 失败:' . $mysqli->connect_error; exit(); } // 处理用户提交的登录信息 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 获取表单提交的数据 $username = $_POST['username']; $password = $_POST['password']; // 查询用户数据 $sql = "SELECT * FROM users WHERE username='$username'"; $result = $mysqli->query($sql); if ($result->num_rows > 0) { $user = $result->fetch_assoc(); // 验证密码是否正确 if (password_verify($password, $user['password'])) { // 登录成功,保存用户信息到会话 $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; echo '登录成功'; } else { echo '密码错误'; } } else { echo '用户名不存在'; } } // 关闭数据库连接 $mysqli->close(); ``` 注销页面(logout.php) ```php <?php // 启动会话 session_start(); // 删除保存的用户信息 unset($_SESSION['user_id']); unset($_SESSION['username']); echo '注销成功'; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值