0

こんにちは、perl は初めてで、スクリプトの一部がスキップされるという問題があります。

ユーザーを検証しようとしています。ユーザーが admin および admin と入力すると、ようこそ画面が表示され、それ以外の場合はエラーが表示されます。

スクリプトが if 条件をスキップし続けます。何か案は?

#!/usr/bin/perl

use CGI;
use strict;
use warnings;

my $object = new CGI;

print "Content-type: text/html\n\n";
if ($object->param("submit")) {
    validate_form ();
} else {
    display_form ();
}

sub validate_form {
    my $user = $object->param("user");
    my $password = $object->param("password");
    my $user2 = "admin";
    my $password2 = "admin";
    my $wrong = "WRONG";
    if (my $user == my $user2 && $password == $password2) {
        print $password;
    } else {
        print $wrong;
    }
}

sub display_form {
    print <<END_HTML;

    <html>
    <head>
    <title>Assignment 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
    <form method="post" action="/~int322_132sa13/cgi-bin/assn1/test2.pl" enctype="mu

    User Name: <input type="text" name="user"  />
    Password:<input type="password" name="password"  />
    <input type="submit" name="submit" value="submit" />
    </form>

    </body>
    </html>

    END_HTML
}
4

1 に答える 1

1

if 条件で $user の前に「my」を削除する必要があると思います

if (my $user == my $user2 && $password == $password2) {

これにより、別のスカラーユーザーが作成されます。

また、「eq」演算子を使用して文字列の等価性を使用したいと考えています。

したがって、上記を次のように変更します。

if ($user eq $user2 && $password eq $password2) {
于 2013-06-11T17:12:59.953 に答える