php 实现简单的登录功能示例【基于thinkPHP框架】

下面是详细的“php 实现简单的登录功能示例【基于thinkPHP框架】”攻略。

前言

在网站开发中,登录功能是非常常见的功能。本文将介绍如何基于thinkPHP框架实现简单的登录功能。

思路

实现登录功能,最主要的点就是如何对用户的账号和密码进行验证。我们可以将用户账号和密码存储在数据库中,当用户输入账号和密码时,我们可以对数据库中存储的账号和密码进行比较,如果账号和密码匹配,则登录成功;反之登录失败。

实现步骤

1. 创建数据库

首先我们需要创建一个用户表,用于存储用户的账号和密码信息。可以使用如下 SQL 语句创建一个名为 user 的表。

CREATE TABLE `user` (
    `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) NOT NULL,
    `password` CHAR(32) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. 创建登录页面

在thinkPHP框架中,我们可以使用MVC模式来开发网站,首先我们需要创建一个登录页面的视图文件。

<!-- login.html -->
<!DOCTYPE html>
<html>
    <head>
        <title>登录页面</title>
    </head>
    <body>
        <form method="post" action="{:url('login/check')}">
            <label for="username">用户名:</label>
            <input type="text" name="username" id="username" /><br /><br />

            <label for="password">密码:</label>
            <input type="password" name="password" id="password" /><br /><br />

            <button type="submit">登录</button>
        </form>
    </body>
</html>

3. 创建登录控制器

接下来,我们需要创建一个用于处理用户登录的控制器。通过 M 告诉控制器找到模型,再通过 V 把模型处理后的数据渲染到相应的视图文件中,C 数据控制器是 M 和 V 的连接部分,负责接收数据并处理后再交给视图层。

<?php
namespace app\index\controller;

use think\Controller;
use think\Request;
use app\index\model\User;

class Login extends Controller
{
    public function index()
    {
        return $this->fetch('login');
    }

    public function check(Request $request)
    {
        $username = $request->post('username');
        $password = $request->post('password');

        $user = User::where('username', $username)
                    ->where('password', md5($password))
                    ->find();

        if($user){
            session('user', $user);
            return $this->success('登录成功', url('index/index'));
        }else{
            return $this->error('用户名或者密码错误');
        }
    }
}

4. 创建用户模型

接下来,我们需要创建一个User模型类,用于处理与用户数据相关的操作。

<?php
namespace app\index\model;

use think\Model;

class User extends Model
{
    protected $pk = 'id';
    protected $table = 'user';
}

5. 配置路由

最后一步,我们需要在应用的入口文件中配置路由,让页面能够正常跳转。

<?php
use think\Route;

Route::get('/', 'index/index');
Route::get('/login', 'login/index');
Route::post('/login/check', 'login/check');

现在,我们的登录功能已经实现了。当用户访问网站时,会跳转到登录页面,输入账号和密码后,会跳转到相应的页面。如果账号和密码错误,则会返回错误信息。

示例说明

示例一

假设我们要实现一个基于管理员角色的登录功能,可以在用户表中增加一个角色字段,用于存储用户的角色信息。那么我们只需要在控制器中增加一行代码即可实现这个功能。

$user = User::where('username', $username)
            ->where('password', md5($password))
            ->where('role', 'admin')
            ->find();

if($user){
    session('user', $user);
    return $this->success('登录成功', url('admin/index'));
}else{
    return $this->error('用户名或者密码错误');
}

示例二

假设我们要对用户输入的密码进行强度校验,检查密码是否包含数字,字母和特殊字符等符号。那么我们可以在模型中增加一个方法,用于校验密码的强度。

<?php
namespace app\index\model;

use think\Model;

class User extends Model
{
    protected $pk = 'id';
    protected $table = 'user';

    public function checkPasswordStrength($password)
    {
        $hasNum = preg_match('/\d+/', $password);
        $hasLetter = preg_match('/[a-zA-Z]+/', $password);
        $hasSpecial = preg_match('/[\W]+/', $password);

        if(!$hasNum || !$hasLetter || !$hasSpecial){
            return false;
        }

        return true;
    }
}

然后我们只需要在控制器中调用这个方法即可。

$password = $request->post('password');

$user = User::where('username', $username)
            ->where('password', md5($password))
            ->find();

if($user && $user->checkPasswordStrength($password)){
    session('user', $user);
    return $this->success('登录成功', url('index/index'));
}else{
    return $this->error('用户名或者密码错误');
}

总结

本文介绍了如何基于thinkPHP框架实现简单的登录功能,主要包括创建数据库,创建登录页面,创建登录控制器,创建用户模型和配置路由等步骤。同时还演示了如何通过控制器和模型的拓展,来实现一些额外的功能。对于刚开始学习thinkPHP框架的同学来说,这篇文章应该是一个很好的入门教程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php 实现简单的登录功能示例【基于thinkPHP框架】 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • php部分常见问题总结

    下面我来详细讲解“PHP部分常见问题总结”的完整攻略,总结内容包括以下几部分: 1. PHP安装 PHP是一个跨平台的脚本语言,可在Windows、Linux等不同操作系统中运行,下面介绍PHP在常见操作系统中的安装方式。 1.1 Windows平台下的PHP安装 下载PHP压缩包 PHP官方提供了Windows平台下的PHP安装包,你可以从PHP官网的下载…

    PHP 2023年5月26日
    00
  • 通过table标签,PHP输出EXCEL的实现方法

    以下是详细的讲解“通过table标签,PHP输出EXCEL的实现方法”的完整攻略: 1. 使用HTML表格生成Excel PHP可以将HTML表格转化为Excel文件格式。先使用HTML的标签来生成表格,再用PHP将表格转化为Excel文件格式,最后输出Excel文件。 // 表格HTML代码 $table_html = ‘<table> &lt…

    PHP 2023年5月26日
    00
  • 微信小程序怎么加入JavaScript脚本,做出动态效果

    请看下面的完整攻略。 微信小程序怎么加入JavaScript脚本,做出动态效果 1. 在wxml文件中加入JavaScript脚本 我们可以在.wxml文件中通过<script>标签来引用JavaScript脚本。以下是一个简单的示例: <view class="container"> <text>{{…

    PHP 2023年5月30日
    00
  • PHP fclose函数用法总结

    PHP fclose函数用法总结 函数概述 fclose() 函数用于关闭打开的文件。 语法 bool fclose ( resource $handle ) 参数 $handle:文件指针(必选),必须是之前通过 fopen() 打开的文件句柄。 返回值 TRUE:成功关闭 FALSE:关闭失败 示例说明 下面通过两个示例说明 fclose() 函数的使用…

    PHP 2023年5月27日
    00
  • php遍历目录输出目录及其下的所有文件示例

    PHP遍历目录输出目录及其下的所有文件 1. 准备目录结构 在开始之前,需要准备一个目录结构,用于测试遍历目录的功能。假设在网站的根目录下准备一个名为 test 的目录,并在该目录下分别创建两个子目录 folder1 和 folder2,并在这两个子目录下分别各创建一个文件。目录结构如下: test/ |– folder1/ | |– file1.txt…

    PHP 2023年5月26日
    00
  • PHP开发中四种查询返回结果分析

    下面我来详细讲解PHP开发中四种查询返回结果分析的完整攻略。 一、普通查询 普通查询即使用SELECT语句查询数据,返回的结果是一个二维数组,其中每个子数组代表一行数据,每个子数组的下标为字段名,值为对应字段的数据。示例代码如下: $sql = "SELECT * FROM users"; $result = $conn->quer…

    PHP 2023年5月26日
    00
  • php文件上传原理与实现方法详解

    PHP文件上传原理与实现方法详解 一、文件上传原理 文件上传是指将客户端计算机上的文件上传到服务端的操作。实现文件上传主要需要涉及两个方面:前端与后端。 前端实现:通过HTML表单中的文件上传组件 input type=”file” 实现文件选择,表单数据通过POST请求提交到后端。 后端实现:通过PHP中的$_FILES数组获取文件上传的详细信息,如文件名…

    PHP 2023年5月26日
    00
  • php使用多个进程同时控制文件读写示例

    接下来我将为您详细讲解如何使用PHP使用多个进程同时控制文件读写的完整攻略。在本攻略中,我们将探讨基于文件锁和共享内存的两种不同的实现方式。 文件锁实现文件读写 文件锁是一种防止多个进程并发访问同一个文件的机制。在PHP中,可以使用flock()函数来实现文件锁。下面是一个简单的示例,展示如何在PHP中使用文件锁来实现文件读写的并发控制: <?php …

    PHP 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部