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 />
    密&nbsp;&nbsp;&nbsp;码:<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);
        }
    }

}

(完.)

时间: 2024-10-04 04:00:01

PHP验证用户登录例子-学习笔记的相关文章

PHP验证用户登录例子

1.基本流程: 2.UML类图: 3.PHP代码: 3.1 index.php   3.2 login.php   3.3 myexception.php   3.4 user.php   3.5 validate.php   转载:http://www.cnblogs.com/wghao/p/6103768.html

单点登录CAS使用记(三):实现自定义验证用户登录

问题: CAS自带的用户验证逻辑太过简单,如何像正常网站一样,通过验证DB中的用户数据,来验证用户以及密码的合法性呢? 方案1:CAS默认的JDBC扩展方案: CAS自带了两种简单的通过JDBC方式验证用户的处理器. 1.QueryDatabaseAuthenticationHandler 2.SearchModeSearchDatabaseAuthenticationHandler 这两个处理类位于cas-server-support-jdbc这个扩展工程下. 第一步:改写用户验证处理器 打开

MVC、MVP、MVVM模式对比总结(4)用户登录例子

前言说明 在实战项目及学习中来总结一下Android端项目构架 包括MVC.MVP.MVVM,主要针对移动Android端 该篇以Android平台用户登录为例子,用代码来描述构架模式 代码主要作理解,所以可能不完整,因为去掉一些精简方便说明 目录 1.构架基础 2.横向构架模型 3.纵向构架流程 4.用户登录例子 4. 用户登录例子 公共代码 NetHelper网络通信类 使用Retrofit+RxJava技术 NetHelper { private static String baseUrl

Asp.Net使用加密cookie代替session验证用户登录状态 源码分享

首先 session 和 cache 拥有各自的优势而存在.  他们的优劣就不在这里讨论了. 本实例仅存储用户id于用户名,对于多级权限的架构,可以自行修改增加权限字段   本实例采用vs2010编写,vb和c#的代码都是经过测试的:一些童鞋说代码有问题的 注意下    什么? 你还在用vs2008 vs2005? 请自行重载 带有 optional 标致的函数   童鞋们提到的 密码修改后 要失效的问题 当时没有想到 个人认为 大致方向可以> >1. 每个用户生成1个xml 里面保存随机的几

【转】MVC4验证用户登录特性实现方法

在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] public class AuthorizeAttribute : FilterAttribute, IAuthorizationF

MVC4项目中验证用户登录一个特性就搞定

在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] public class AuthorizeAttribute : FilterAttribute, IAuthorizationF

MVC4验证用户登录特性实现方法

在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] public class AuthorizeAttribute : FilterAttribute, IAuthorizationF

PHP+AJAX 验证码验证用户登录

PHP+AJAX 验证码验证用户登录 2011-03-08 22:21:59|  分类: AJAX |  标签:php  ajax  验证登录   |举报 |字号大中小 订阅 用AJAX 验证用户登录的一个好处是不刷新跳转页面,外加用到验证码就更安全了,摸索的写了下.一共用到三个文件: yz.php:  生成验证码的PHP 文件,将验证码将在 SESSION 里,供登录时对比调用 index.php: 用户登录的HTML 文件 loginCheck.php: 验证用户登录的文件 下面一一解析:

[转]MVC4项目中验证用户登录一个特性就搞定

本文转自:http://www.mrhuo.com/Article/Details/470/A-Attribute-For-MVC4-Project-Used-To-Validate-User-Login 在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inhe