验证用户登录(perl)

#!/usr/bin/perl
use strict;
use warnings;
use Term::ReadPassword;  #隐藏密码

=pod
  验证用户登录
  passwd file ./switch 是存放用户名密码的数据文件
  数据文件的格式:用户名  密码
=cut

my (%names,@logusers,$time); #//%names来用验证用户名和密码 @logusers用来保持用户的登录信息
chomp($time=qx(date));
open(LG,'>>','./login.log'); #用于记录用户的登录操作信息

sub user_info
{
   open(FL,'<','./switch') or die "Cant open './switch':$!\n";
   while(<FL>) #读取密码文件的数据信息
   {
      my($user,$pass)=split /\s+/;
      $names{$user} = $pass;  #存储账户和密码
   }
}
#print "Please input your name: ";
LINE: while(1)
{
   &user_info(); #动态刷新用户信息(当有新注册用户的写入数据文件时)
   print "Please input your name: ";
   chomp(my $user=<STDIN>);
   my $count=0;
   if (exists $names{$user}) #判断用户是否存在,如果存在则认证密码,否则重新验证用户
   {
      while(1)
      {
         ++$count;
         if($count >= 4) #判断密码输入的次数,尝试3次密码错误,重新输入用户名
         {
           print "Password to try the 3 error, please re-enter the user name\n";
           redo LINE; #返回最外层循环
         }
         chomp(my $pass=read_password('password: '));
         if("$pass" eq "$names{$user}") #验证密码的正确性,验证成功后将账户密码存储数组,否则重新输入密码
         {
             print "Login Success!\n";
             push @logusers,"$user";push @logusers,"$pass";
             print LG "$time => The $user login successful\n";
             last LINE;
         }
         else
         {
             print "passwd wrong,try again\n";
             print LG "$time => The $user input passwd is wrong\n";
             redo; #无条件的返回上次循环
         }
       }
   }
   else
   {
      print LG "$time => The $user is not exists at the  system\n";
      print "Your name is not exists or wrong,try again\n";
      redo ; #无条件的返回上次循环
   }
}
close(FL);
close(LG);
print "Hello test\n";
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值