登陆类

本文提供了一个使用PHP实现的简单登录验证实例。通过定义一个类来处理用户输入,并连接数据库进行用户名和密码的验证。如果验证失败,则返回相应的错误提示。
<?php
 class chkinput{
   var $name;
   var $pwd;

   function chkinput($x,$y)
    {
     $this->name=$x;
     $this->pwd=$y;
    }

   function checkinput()
   {
     include("../conn/conn.php");
     $sql=mysql_query("select * from tb_admin where name='".$this->name."'",$conn);
     $info=mysql_fetch_array($sql);
     if($info==false)
       {
          echo "<script language='javascript'>alert('不存在此管理员!');history.back();</script>";
          exit;
       }
      else
       {
       	   if($info['pwd']==$this->pwd){
               header("location:index.php");
            }
          else
           {
             echo "<script language='javascript'>alert('密码输入错误!');history.back();</script>";
             exit;
           }

      }    
   }
 }


    $obj=new chkinput(trim($_POST['name']),md5(trim($_POST['pwd'])));
    $obj->checkinput();

?>

 

转载于:https://www.cnblogs.com/flying-tx/p/3708555.html

### 登录中单一职责原则的应用 #### 定义登录的单个职责 为了使登录遵循单一职责原则,该应只负责处理用户的认证逻辑。这意味着任何其他功能,比如用户注册、密码找回或会话管理等功能都应当被拆分到独立的中[^1]。 ```python class Authenticator: def authenticate(self, username: str, password: str) -> bool: """验证用户名和密码""" # 假设这里有一些数据库查询来验证凭证的有效性 return True # 如果凭证有效返回True;否则返回False ``` #### 将额外的功能分离出去 当发现登录承担了过多责任时,应该考虑创建新的来接管这些特定的任务。例如,可以将发送通知邮件或者记录日志这样的行为移到专门的服务里去[^2]。 ```python class LoggerService: def log_event(self, event_description: str): """记录事件描述""" pass class NotificationService: def send_email_notification(self, recipient: str, message: str): """向指定收件人发送电子邮件通知""" pass ``` 通过这种方式,`Authenticator` 专注于身份验证工作,而 `LoggerService` 和 `NotificationService` 则分别处理它们各自领域内的事情。这不仅简化了各个组件的设计,还提高了整个应用程序架构的质量。 #### 使用依赖注入增强灵活性 为了让不同服务之间能够更好地协作而不增加耦合度,推荐采用依赖注入模式。这样可以在运行时动态配置所需的服务实例,从而使得单元测试更加容易实施并增强了模块间的解耦程度。 ```python from typing import Protocol class LoggingProtocol(Protocol): def log_event(self, event_description: str): ... class NotifyingProtocol(Protocol): def send_email_notification(self, recipient: str, message: str): ... class EnhancedAuthenticator(Authenticator): def __init__(self, logger: LoggingProtocol, notifier: NotifyingProtocol): self._logger = logger self._notifier = notifier def authenticate_with_logging_and_notifications( self, username: str, password: str, notify_on_success=True, notify_on_failure=False ): success = super().authenticate(username, password) if not success and notify_on_failure: self._notifier.send_email_notification('admin@example.com', f'Failed login attempt by {username}') elif success and notify_on_success: self._notifier.send_email_notification('user@example.com', 'You have successfully logged in.') self._logger.log_event(f'User "{username}" {"logged in" if success else "failed to log in"}') return success ``` 上述代码展示了如何利用接口协议(Protocols)定义抽象基,并通过构造函数参数传递具体实现方式给目标对象。这样做既保证了各部分之间的松散连接关系又实现了良好的扩展能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值