PHP验证用户登录例子-学习笔记
1.基本流程:

2.UML类图:

3.PHP代码:
3.1 index.php
<?php
/**
* Created by PhpStorm.
* User: andy
* Date: 16-11-25
* Time: 下午10:13
*/ session_start();
$validate_username=isset($_SESSION['validate_username'])?$_SESSION['validate_username']:'';
$validate_password=isset($_SESSION['validate_password'])?$_SESSION['validate_password']:''; ?> <html>
<head>
<meta charset="utf-8"/>
<title>用户登录</title>
</head>
<body>
<h1>用户登录</h1>
<form action="login.php" method="post">
用户名:<input type="text" name="username" value="" /><font color="red">
<?php echo $validate_username; ?>
</font><br /><br />
密 码:<input type="password" name="password" value="" /><font color="red">
<?php echo $validate_password; ?>
</font><br /><br />
<input type="submit" value="提交" />
</form>
</body>
</html>
3.2 login.php
<?php
/**
* Created by PhpStorm.
* User: andy
* Date: 16-11-25
* Time: 下午10:20
*/ session_start(); $username = $_POST['username'];
$password = $_POST['password']; $user = new User($username, $password); //判断登录是否成功
try{
Validate::validateUser($user); //验证通过,登录成功
$_SESSION['username']=$username;
header('location:main.php');
}catch (MyException $me){ //验证失败
header('location:index.php');
} /**
* 自动加载类
* @param $class
* @return string
*/
function __autoload($class)
{
$file = __DIR__ . '/' . strtolower($class) . '.php';
if (is_file($file)) {
include_once $file;
}
return '';
}
3.3 myexception.php
<?php /**
* Created by PhpStorm.
* User: andy
* Date: 16-11-25
* Time: 下午10:50
*/
class MyException extends Exception
{ }
3.4 user.php
<?php /**
* Created by PhpStorm.
* User: andy
* Date: 16-11-25
* Time: 下午10:29
*/
class User
{
private $username = '';
private $password = ''; function __construct($username, $password)
{
$this->username = $username;
$this->password = $password;
} /**
* 返回用户名
* @return string
*/
public function getUsername(): string
{
return $this->username;
} /**
* 返回密码
* @return string
*/
public function getPassword(): string
{
return $this->password;
}
}
3.5 validate.php
<?php /**
* 验证类
* Created by PhpStorm.
* User: andy
* Date: 16-11-25
* Time: 下午10:34
*/
class Validate
{
/**
* 验证用户
* @param User $user
* @throws MyException
*/
static function validateUser(User $user)
{
//print_r($user);
$username = $user->getUsername();
$password = $user->getPassword(); unset($_SESSION['validate_username'],$_SESSION['validate_password']); //验证用户名
try {
self::validateUsername($username);
}catch (MyException $me) {
$_SESSION['validate_username']=$me->getMessage();
} //验证密码
try {
self::validatePassword($password);
}catch (MyException $me) {
$_SESSION['validate_password']=$me->getMessage();
} if(isset($me)){
throw $me;
} } /**
* 验证用户名
* @param $username
* @throws MyException
*/
static private function validateUsername($username)
{
$lem = strlen($username);
if ($lem < 3) {
//抛出异常
throw new MyException('用户名长度不能小于3位', E_USER_ERROR);
} elseif ($lem > 8) {
throw new MyException('用户名长度不能超过8位', E_USER_ERROR);
}
} /**
* 验证密码
* @param $password
* @throws MyException
*/
static private function validatePassword($password)
{
$lem = strlen($password);
if ($lem < 3) {
//抛出异常
throw new MyException('密码长度不能小于3位', E_USER_ERROR);
} elseif ($lem > 8) {
throw new MyException('密码长度不能超过8位', E_USER_ERROR);
}
} }
(完.)
PHP验证用户登录例子-学习笔记的更多相关文章
- python 全栈开发,Day119(Flask初识,Render Redirect HttpResponse,request,模板语言 Jinja2,用户登录例子,内置Session)
一.Flask初识 首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 三大主流Web框架对比 ...
- easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)
easyui datagrid 禁止选中行 没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...
- 单点登录CAS使用记(三):实现自定义验证用户登录
问题: CAS自带的用户验证逻辑太过简单,如何像正常网站一样,通过验证DB中的用户数据,来验证用户以及密码的合法性呢? 方案1:CAS默认的JDBC扩展方案: CAS自带了两种简单的通过JDBC方式验 ...
- django-自定义用户登录(个人笔记)
django自定义用户登录(个人笔记) 函数说明 1. render()函数:对用户请求做出响应 2. path()函数:定义路由 3. create()函数:增加数据表记录 配置settings.p ...
- MVC4项目中验证用户登录一个特性就搞定
在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(Attribu ...
- MVC4验证用户登录特性实现方法
在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(Attribu ...
- 转:C4项目中验证用户登录一个特性就搞定
转:C4项目中验证用户登录一个特性就搞定 在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用 ...
- .net MVC使用Session验证用户登录(转载)
.net MVC使用Session验证用户登录 用最简单的Session方式记录用户登录状态 1.添加DefaultController控制器,重写OnActionExecuting方法,每次访问 ...
- How to use the windows active directory to authenticate user via logon form 如何自定义权限系统,使用 active directory验证用户登录
https://www.devexpress.com/Support/Center/Question/Details/Q345615/how-to-use-the-windows-active-dir ...
随机推荐
- 透过WinDBG的视角看String
摘要 : 最近在博客园里面看到有人在讨论 C# String的一些特性. 大部分情况下是从CODING的角度来讨论String. 本人觉得非常好奇, 在运行时态, String是如何与这些特性联系上的 ...
- [原创]mybatis中整合ehcache缓存框架的使用
mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...
- 我为NET狂官方面试题-数据库篇
求结果:select "1"? 查找包含"objs"的表?查找包含"o"的数据库? 求今天距离2002年有多少年,多少天? 请用一句SQL获 ...
- CSS HTML元素布局及Display属性
本篇文章主要介绍HTML的内联元素.块级元素的分类与布局,以及dispaly属性对布局的影响. 目录 1. HTML 元素分类:介绍内联元素.块级元素的分类. 2. HTML 元素布局:介绍内联元素. ...
- [APUE]标准IO库(下)
一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...
- svn 常用命令总结
svn 命令篇 svn pget svn:ignore // 查看忽略项 svn commit -m "提交说明" // 提交修改 svn up(update) // 获取最新版本 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印
系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- OEL上使用yum install oracle-validated 简化主机配置工作
环境:OEL 5.7 + Oracle 10.2.0.5 RAC 如果你正在用OEL(Oracle Enterprise Linux)系统部署Oracle,那么可以使用yum安装oracle-vali ...
- 以向VS 程序打包集成自动写入注册表功能为例,介绍如何实现自由控制安装过程
最近由于项目部署时需要更灵活的控制程序安装的流程以及自定义安装行为,特意研究了一下VS程序打包,把解决办法和大家分享一下. 以VS2010为例: 这是一个已经设置好最基本的Visual Studio ...