使用哈希检查平面文件以进行用户登录

时间:2012-02-13 00:56:58

标签: perl mod-perl

我正在处理用户登录,并且我正在尝试使用哈希键分配来检查平面文件以查看输入的密码是否与存储的密码匹配。但是,我不太清楚我在做什么,所以一些指导会很棒。我提供的代码正常工作,但其中有些东西应该更新为更现代的Perl编程风格,我只是不知道如何做到这一点。 http://codepad.org/YYGmdknl

1 个答案:

答案 0 :(得分:3)

你是说代码不起作用?它确实很脏,但它看起来应该可以工作。

修正:

use strict;    # Always use this!
use warnings;  # Always use this!

my $user     = ...;
my $password = ...;

my %passwords;
open(my $fh, '<', 'password.txt') or die $!;
while (<$fh>) {
   chomp;
   my ($user, $password) = split /:/;
   $passwords{$user} = $password;
}
close($fh);

if (exists($passwords{$user}) && $password eq $passwords{$user}) {
   print p("Hello"." ".$user);
} else {
   print p("Login failed.");
}

但为什么哈希?

use strict;
use warnings;

my $user     = ...;
my $password = ...;

my $logged_in;
open(my $fh, '<', 'password.txt') or die $!;
while (<$fh>) {
   chomp;
   my ($file_user, $file_password) = split /:/;
   if ($user eq $file_user) {
      if ($password eq $file_password) {
         $logged_in = 1;
      }

      last;
   }
}
close($fh);

if ($logged_in) {
   print p("Hello"." ".$user);
} else {
   print p("Login failed.");
}