出处:http://www.cnblogs.com/jacklondon/archive/2012/01/13/2321686.html近日偶尔看到一个很巧妙的 SQL 技巧,一个简单的 SQL 同时验证帐号是否存在、密码是否正确。之前从未曾想过这么做,也未曾见过别人这么做。虽是奇技淫巧,却真正所谓构思巧妙。如果用来面试考考别人,真的能够难倒一大片兄弟。好东西不敢独享,特公开与大家同乐。

SELECT CASE WHEN p.encrypted_password =? THEN 1 ELSE 0 END FROM tm_app_user u, tm_app_user_credential p WHERE u.app_user_uuid = p.app_user_uuid AND (LOWER(u.user_sign_in_nm) = ? OR LOWER(u.email) = ?)

解释:

a. 如果用户名不存在,则查询结果是无数据

b. 如果用户名存在,而密码不正确,则返回 0

c. 如果用户名存在,而密码正确,则返回 1

之所以把密码单独用一个表保存,是因为用户的其他信息(用户名、邮件、电话)与密码是两种不同性质的东西,系统架构师决定分开保存,有助于提醒程序员这种差别: 用户的其他信息可以查看,密码不能查看;用户的其他信息更改时可以看到更改前的数据,密码更改时不能看到更改前的数据;修改用户密码与修改用户其他信息,是两个不同页面。虽说程序员普遍有“文人相轻”的毛病(读书人互相瞧不起),但看到这个 SQL,不能不让人佩服。

转载于:https://www.cnblogs.com/wqvbjhc/archive/2012/01/14/2465086.html

一个 SQL 同时验证帐号是否存在、密码是否正确相关推荐

  1. php记住用户名密码,记住帐号、记住密码、记住表单信息等“记住”的实现

    登录界面有记住帐号.记住密码,留言时有记住表单信息等,这使得用户在下次访问该页面时不用重复地输入重复的信息,减少重复劳动.网页设计者当然要满足用户的需求,那么PHP是怎么实现这些"记住&qu ...

  2. 模拟一个“系统登陆“窗体,进行用户名和密码的验证: 1.当用户名和密码都正确时,弹出一个对话框,提示“用户名和密码正确”, 2.用户名错误,弹出一个对话框,提示“用户名错误,请重新输入!”

    模拟一个"系统登陆"窗体,进行用户名和密码的验证: 1.当用户名和密码都正确时,弹出一个对话框,提示"用户名和密码正确", 2.用户名错误,弹出一个对话框,提示 ...

  3. ThinkPHP 3.2 用户注册邮箱验证帐号找回密码

    一.前言 当然现在有的网站也有手机短信的方式找回密码,原理就是通过发送验证码来验明正身,和发送邮件验证一样,最终还是要通过重置密码来完成找回密码的流程. 本文将使用PHP+Mysql+jQuery来实 ...

  4. 四千多个厂商默认帐号、默认密码

    设备 默认账号 默认密码 致远OA sangfor admin1 audit-admin group-admin system 123456 123456 123456 泛微OA sysadmin 1 ...

  5. 使用正则表达式验证银行帐号

    银行帐号是在任何特定银行开设账户后分配给账户持有人的唯一编号.从技术上讲,我们可以将银行帐号视为主键.银行帐号使我们能够进行借记.贷记和其他交易.根据 RBI 指南,银行帐号具有独特的结构.Accou ...

  6. 用户登录验证(新增帐号错误重试)

    #!/usr/bin/env python3 # -*- coding:utf-8 -*- # # Author: Payne Zheng <zzuai520@live.com> # Da ...

  7. 做一个下载网站,如何用ASP操纵server-u新开帐号?http://book.xker.com/CSDN/asppost6/web28160.htm

    我的思路:下载网站只提供给注册会员,利用ASP给每个新开用户一个单独的serv-u帐号,该serv-u帐号在开通时作如下设置:1.用户从一个IP最多登录数量为1:2.最大下载速度为100K:3.目录访 ...

  8. Oracle 18c新特性:Schema-Only 帐号提升应用管理安全性

    在 Oracle 18c 中,一个特殊类型的帐号被引入到数据库当中,这特特性被称为 Schema-Only 帐号,这个帐号通过 NO AUTHENTICATION 语句建立,没有密码,也就不允许直接登 ...

  9. windows phone 越狱教程:利用学生帐号解锁并部署软件教程(图文并茂)

    之前老是看到有学生帐号可以越狱,但一直以来都觉得比较复杂,不想下手. 近日,TX微信出来了,很多人都想装,可是装不了, 所以下决心研究一下学生帐号越狱. 网上看教程,发现很多都是不全面,有些只有一半, ...

最新文章

  1. KDD 2021 即将开幕!当线上 AI 顶会开始内卷.....
  2. 运用PFA的路灯指示牌GUI程序
  3. Excel2007导入
  4. OpenCV连接的组件Connected Components的实例(附完整代码)
  5. [渝粤教育] 西南科技大学 计算机工业控制 在线考试复习资料
  6. boost库下的deadline_timer和steady_timer 区别
  7. ICMP报文分析(转)
  8. JVM——Java内存模型(JMM)
  9. java编写龟兔赛跑_java--龟兔赛跑模拟
  10. 华为鸿蒙是物联网操作系统;字节跳动的飞聊被 App Store 下架;FFmpeg 作者编写 JS 引擎 | 极客头条...
  11. 数据库学习--主从复制
  12. SVN入门 TortoiseSVN 检出
  13. kettle连接ClickHouse
  14. 干货 :六招教你用Python分分钟构建好玩的深度学习应用
  15. w10系统老是自动息屏_win10关闭屏幕后黑屏无法唤醒?你一定要学会这几招解决方法...
  16. Arduino_OLED-0.96游戏机
  17. android将控件镜像显示,Android重写ImageView实现图片镜像效果
  18. 电脑族科学护眼五常识
  19. 联想微型计算机开机密码忘记了,联想笔记本忘记开机密码怎么办
  20. Python 3 字符串 ljust( ) 方法

热门文章

  1. 数据结构7.3_图的遍历
  2. Redis进阶实践之十六 Redis大批量增加数据
  3. wordpress配置SMTP服务发送邮件
  4. Oracle 10g 问题集锦
  5. CentOS远程监控
  6. 远程连接mysql数据库,1130问题
  7. Mysql存储引擎中InnoDB与Myisam的区别
  8. 靠能力赚大钱,是最最可笑的谎言
  9. HDOJ1106 排序
  10. 计算机网络常见面试真题详解