#include<头文件省略>
——核心begin
class CSocket32;//CSocket32  &m_socka实现套接字的引用
class CLogin  
{    
    
public:
    CLogin(CSocket32& socka);//引用必须初始化
    virtual ~CLogin();
    
    inline string &GetUser() {return m_szUser;}//获取 用户名
    inline string &GetPath() {return m_szPath;}//获取 可访问目录
    inline BOOL IsLoged(){return m_bLogin;}//获取登陆状态
    BOOL Login(LPCSTR sKey,string& str);//登陆操作

private:
    BOOL USER(string &str);//核对--用户名
    BOOL PASS(string &str);    //核对--密码
    
private:
    BOOL m_bLogin;  //登陆状态
    string m_szUser;//用户名
    string m_szPass;//密码
    string m_szPath;//可访问的目录
    CSocket32  &m_socka;//套接字引用
    
};
——核心end

实现部分

——核心begin
//异常类
class CError
{
    const char* m_pError;
public:
    CError(const char* p)
    {
        m_pError = p;
    }
    const char* what(){return m_pError;}

};
//构造初始
CLogin::CLogin(CSocket32& socka):m_socka(socka),m_bLogin(FALSE)
{
    //socka的初始化。*必须*
}

CLogin::~CLogin()
{

}
/**//*************************************************************/
//1. 登陆操作
BOOL CLogin::Login(LPCSTR sKey,string &str)
{
    if(m_bLogin)return TRUE;
    try
    {
    if(!strcmp(sKey,"USER"))//用户名正确
        if(USER(str))return TRUE;
    if(!strcmp(sKey,"PASS"))//密码正确
        if(PASS(str))return TRUE;
    }catch(CError &e)//异常返回
    {
        str = "530 Login incorrect for " + string(e.what()) + "." + CRLF;
        m_socka.Send(str.c_str(),str.length());
    }
    return FALSE;
}

//2. 核对用户名 key=user
BOOL CLogin::USER(string &str)
{
    char s[256];
    strcpy(s,str.c_str());
    strupr(s);
    if(!theApp.m_map.count(s))//搜索S在map的个数
    {    
        throw CError("username");
    }
        
    m_szUser = s;
    str = "331 Password required for "+str+"." + CRLF;
    m_socka.Send(str.c_str(),str.length());//用户名无误,返回索取密码消息
   
    return TRUE;

}

//3. 核对密码 value.pass
BOOL CLogin::PASS(string &str)
{
    if(theApp.m_map[m_szUser].szPass != str)
    {
        throw CError("password");
    }
    m_bLogin = TRUE;
    m_szPass = str;
    m_szPath = theApp.m_map[m_szUser].szPath;//密码无误,获取可访目录
    str = "230 User "+m_szUser +" logged in , proceed." +CRLF;
    m_socka.Send(str.c_str(),str.length());

    return TRUE;
    
}
——核心end

万家乐热水器维修

美的热水器维修

转载于:https://www.cnblogs.com/cutreaper/archive/2010/05/14/1735183.html

服务器端登陆机制的 实现模块相关推荐

  1. 浅析phpwind9.0之登陆机制

    由于工作的需要,所以开始分析phpwind9.0论坛的部分功能的处理机制,这一节来分析登陆机制. 首先当用户点击进入登陆页面后:(这里不讨论快速登陆和直接在页头登陆的情况,原理基本一致) 进入该类调用 ...

  2. python导入机制及importlib模块

    文章目录 写在篇前 import 关键字 先导概念 namespace & scope Module & Packages module packages regular packag ...

  3. ssh免密登陆机制示意图

    ssh免密登陆机制示意图

  4. CVPR 2021 |针对强时序依赖,即插即用、混合注意力机制的 ACTION 模块

    本文是对我们 CVPR 2021 接收的工作 "ACTION-Net: Multipath Excitation for Action Recognition" 的介绍.主要针对强 ...

  5. CVPR 2021 | 用于动作识别,即插即用、混合注意力机制的 ACTION 模块

    分享一篇来自 CVPR 2021 的文章,ACTION-Net: Multipath Excitation for Action Recognition.作者单位:都柏林圣三一大学,字节跳动 AI L ...

  6. Yii 用户登陆机制

    Yii 生成应用时已经提供了最基础的用户登陆机制.我们用 Yii 生成一个新的应用,进入 protected/components 目录,我们可以看到 UserIdentity.php 文件,里面的 ...

  7. destoon8.0火车头免登陆发布接口+全模块采集规则+主动推送百度

    destoon8.0火车头免登陆发布接口,不限制域名,支持全模块模拟采集更新外加入库自动推送百度. 下载地址:destoon8.0火车头免登陆发布接口+全模块采集规则+主动推送百度-68资源网dest ...

  8. 利用bigpipe机制实现页面模块的异步渲染 chunked技术

    bigpipe基于HTTP/1.1 支持的chunked编码,可以由浏览器接收到服务器发送的chunked块后,立即解析该块代码.因为chunked编码使消息主体成块发送,每块有自己的大小指示器,在所 ...

  9. 理解 K8S 的设计精髓之 List-Watch机制和Informer模块

    1. 前言 最近想深入了解一下K8S的内部通信机制,因此读了几遍K8S的源码,感慨很深.至今清楚的记得,当了解到K8S 组件之间仅采用HTTP 协议通信,没有依赖中间件时,我非常好奇它是如何做到的. ...

  10. 4.16Day21垃圾回收机制、re模块正则

    ```python ```今日内容: 1.垃圾回收机制 2.re模块:正则 一.垃圾回收机制 不能被程序访问的数据,就是垃圾 1.引用计数 引用计数是用来记录值的内存地址被记录次数的 每一次对值地址的 ...

最新文章

  1. 斯坦福大学深度学习与自然语言处理第二讲:词向量
  2. wireshark一招掌握如何过滤想要的数据再也不用查找天书般的说明文档
  3. pyhton 把文字放入图片里_藏在京城老字号里的六道功夫菜!久违了!!
  4. 摄像头poe供电原理_弱电知识之六:跟我学做监控,认识POE交换机与POE监控摄像头...
  5. 不是有效的函数或过程名_过程和函数
  6. 软件工程之项目管理核心框架
  7. svn打分支与分支合并回主干
  8. atomic一定线程安全吗
  9. JIRA数据库的迁移,从HSQL到MYSQL/Oracle
  10. 对Object.prototype.toString.call(obj)的理解
  11. 提高网速软件测试简历,测试局域网网速的方法
  12. P1095 [NOIP2007 普及组] 守望者的逃离
  13. 关于设计(一)设计的概念和意义
  14. 数据库死锁的预防与解除
  15. 小米10pro和小米10的区别
  16. Led护眼灯真的有效果吗?2022双十一最值得入手护眼台灯推荐
  17. LeetCode(Python实现)——Easy部分【Day2】
  18. SpringCloud的@Value注解及GitLab配置使用
  19. 天下武功唯快不破-实验吧
  20. 从此我该怎么过 很感人的Flash歌曲

热门文章

  1. 数据展现DataList控件(26)
  2. Linux 中ifconfig和ip addr命令看不到ip
  3. 课程设计第一次实验总结
  4. 【java】打印一个对象即打印出该对象toString()返回值
  5. 15.SpringMVC和Spring上下文关系(为什么SpringMVC可以调用到Spring)
  6. Python标准类型的分类
  7. 韩顺平循序渐进学java 第18讲 查找
  8. 将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方...
  9. 软件详细设计文档【转】
  10. BZOJ 1935: [Shoi2007]Tree 园丁的烦恼