如何在html按钮onclick事件后运行perl脚本

时间:2013-11-26 12:15:54

标签: perl cgi html-form

嗨,我是Perl,CGI和HTML的新手 我在Linux上工作,我的apache配置正确。 我有一个简单的程序,应该询问您的用户名和密码,输入应该来自我的Perl脚本使用perl中的CGI模块生成的html文件。然后用户应该单击“登录”按钮,此事件应该将这些变量发送到另一个Perl脚本进行身份验证...我的问题是使用按钮的onClick属性发送这些变量。 我已经看到很多答案说你应该使用'提交'按钮,但我无法让这个工作,很多答案说你应该使用Javascripts但我也不知道这是如何工作的,请帮忙! 这是我的登录perl脚本(Login.plx):

require 'Authentication.plx';

use CGI;
my $q = new CGI;

print $q->header;
print $q->start_html( -title => "Build Server");

print $q->h2("Login page");

print $q->start_form(
        -name       =>"Login_form",
        -method     =>"GET"
        -action     =>"Authentication.plx");

#Create textfield for Username, asigns value to $username
print $q->p("Name:");
print $q->textfield(-name=> 'usernameInput', -value=> 'Ockert', size=>20, -maxlength=>80);
my $username = $q->param('usernameInput');
#Create masked textfield for Password, asigns value to $password
print $q->p("Password:");
print $q->password_field(-name=>'passwordInput', -value=>'starting value',-size=>20,-maxlength=>80);
my $password = $q->param('passwordInput');
$password = crypt($password,12);

#call subAuthentication subroutine
print $q->submit(
    -name       => "btnLogin",
    -value      => "Login");

print $q->end_form;
print $q->end_html;

subAuthentication脚本(Authentication.plx):

use CGI;
my $q = new CGI;    

sub subAuthentication {

my $username = $q->param('$username');
my $password = $q->param('$password');

@return = ("Username not foud","Incorrect password","empty"); 

open(DATA,"<Users.txt") 
    or die "Can't open Users.txt";
$oneline = "";

foreach $oneline (<DATA>) {

    #print "\nValue of counter is $count\n";

    chomp($oneline);
    #print "oneline: $oneline\n";

    @oneline = split(',', $oneline, 3);

    #get administrator or user      
    $return[2] = $oneline[2];

    if ($username eq $oneline[0]) 
    {
        $return[0] = "true";
        ($password eq $oneline[1])? $return[1] = "true" : 0;
        last;
    }
}

close(DATA);

return @return;
}

请帮助:)

1 个答案:

答案 0 :(得分:0)

您需要将表单控件放在表单中。

实际上,在您输出表单控件后,您正在调用start_form


您需要在提交的脚本中获取提交的值(使用->param),而不是生成HTML表单的脚本。在提交表单之前,它们将无法使用。


您还应该使用常规提交按钮,而不是附带JavaScript的通用按钮。

如果你打算使用附加的JavaScript(通过onclick),那么它需要是真正的JavaScript而不是Perl。浏览器不支持客户端Perl。