1.1.3 登录检测
学习目标
这一节,我们从 需求简介、简单实践、小结 三个方面来学习
基础知识
简介
在很多的应用交互页面,经常会出现一些用户输入的信息:
账号登录场景: 比如用户名、密码、手机号、邮箱之类的校验信息
手机号匹配
准备手机号文件
[root@localhost ~]# cat phone.txt
13412345678
135666666667
13a12345678
198123456
过滤真正的手机号
[root@localhost ~]# egrep '\<1[3-9][0-9]{9}\>' phone.txt
13412345678
邮箱地址匹配
定制邮箱地址文件
[root@localhost ~]# cat testemail.txt
admin@qq.com
1881111@gmail.eduedu
10.0.0.12
"shuji@qq.com
123_shuji@12306.cn
匹配邮箱地址
[root@localhost ~]# egrep "^[0-Z_]+\@[0-Z]+\.[0-Z]{2,5}$" testemail.txt
admin@qq.com
123_shuji@12306.cn
简单实践
脚本内容
查看脚本内容
[root@localhost ~]# cat register_login_manager.sh
#!/bin/bash
# 功能:定制管理界面的登录注册功能
# 版本:v0.1
# 作者:书记
# 联系:www.superopsmsb.com
# 定制目标类型变量
target_type=(登录 注册)
# 定制普通变量
user_regex='^[0-Z_@.]{6,15}$'
passwd_regex='^[0-Z.]{6,8}$'
phone_regex='^\<1[3-9][0-9]{9}\>$'
email_regex='^[0-Z_]+\@[0-Z]+\.[0-Z]{2,5}$'
# 检测用户名规则
check_func(){
# 接收函数参数
target=$1
target_regex=$2
# 判断目标格式是否有效
echo $target | egrep "${target_regex}" >/dev/null && echo "true" || echo "false"
}
# 定制服务的操作提示功能函数
menu(){
echo -e "\e[31m---------------管理平台登录界面---------------"
echo -e " 1: 登录 2: 注册"
echo -e "-------------------------------------------\033[0m"
}
# 定制帮助信息
Usage(){
echo "请输入正确的操作类型"
}
# 管理平台用户注册过程
user_register_check(){
read -p "> 请输入用户名: " login_user
user_result=$(check_func ${login_user} ${user_regex})
if [ ${user_result} == "true" ];then
read -p "> 请输入密码: " login_passwd
passwd_result=$(check_func ${login_passwd} ${passwd_regex})
if [ ${passwd_result} == "true" ];then
read -p "> 请输入手机号: " login_phone
phone_result=$(check_func ${login_phone} ${phone_regex})
if [ ${phone_result} == "true" ];then
read -p "> 请输入邮箱: " login_email
email_result=$(check_func ${login_email} ${email_regex})
if [ ${email_result} == "true" ];then
echo -e "\e[31m----用户注册信息内容----"
echo -e " 用户名称: ${login_user}"
echo -e " 登录密码: ${login_passwd}"
echo -e " 手机号码: ${login_phone}"
echo -e " 邮箱地址: ${login_email}"
echo -e "------------------------\033[0m"
read -p "> 是否确认注册[yes|no]: " login_status
[ ${login_status} == "yes" ] && echo "用户 ${login_user} 注册成功" && exit || return
else
echo "邮箱地址格式不规范"
fi
else
echo "手机号码格式不规范"
fi
else
echo "登录密码格式不规范"
fi
else
echo "用户名称格式不规范"
fi
}
# 定制业务逻辑
while true
do
menu
read -p "> 请输入要操作的目标类型: " target_id
if [ ${target_type[$target_id-1]} == "登录" ];then
echo "开始登录管理平台..."
elif [ ${target_type[$target_id-1]} == "注册" ];then
user_register_check
else
Usage
fi
done
脚本执行效果
[root@localhost ~]# /bin/bash register_login_manager.sh
---------------管理平台登录界面---------------
1: 登录 2: 注册
-------------------------------------------
> 请输入要操作的目标类型: 2
> 请输入用户名: root12345
> 请输入密码: 12345678
> 请输入手机号: 13412345678
> 请输入邮箱: qq@123.com
----用户注册信息内容----
用户名称: root12345
登录密码: 12345678
手机号码: 13412345678
邮箱地址: qq@123.com
------------------------
> 是否确认注册[yes|no]: yes
用户 root12345 注册成功
[root@localhost ~]# /bin/bash register_login_manager.sh
---------------管理平台登录界面---------------
1: 登录 2: 注册
-------------------------------------------
> 请输入要操作的目标类型: 2
> 请输入用户名: admin123
> 请输入密码: 12345678
> 请输入手机号: 14456789090
> 请输入邮箱: qq@qq.com
----用户注册信息内容----
用户名称: admin123
登录密码: 12345678
手机号码: 14456789090
邮箱地址: qq@qq.com
------------------------
> 是否确认注册[yes|no]: no
---------------管理平台登录界面---------------
1: 登录 2: 注册
-------------------------------------------
> 请输入要操作的目标类型: