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); } } }
(完.)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2009-11-26 查询SQL错误日志扩展存储过程xp_readerrorlog