嗨,我是新来的Perl和CGI和HTML 我正在Linux上工作,我的apache已正确配置。 我有一个简单的程序,应该要求您的用户名和密码,输入应该来自我的Perl脚本使用perl中的CGI模块生成的html文件。然后用户应该点击“登录”按钮,这个事件应该发送这些变量到另一个Perl脚本进行身份验证......我的问题是使用按钮的onClick属性发送这些变量。 我见过很多答案,说你应该使用“提交”按钮,但我无法得到这个工作和很多答案说你应该使用Javascript,但我也不知道这是如何工作,请帮助! 这是我的登录perl脚本(Login.plx):如何在html按钮onclick事件后运行perl脚本
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;
而且子身份验证脚本(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;
}
请帮助:)
“我看到很多答案,说你应该使用”提交“按钮” - 是的,你应该,这正是提交按钮的用途。 - “但是我不能把它说出来” - 你想要达到什么样的代码? - “和很多答案都说你应该使用Javascript” - 在降低可靠性的同时大量地过度复杂化,不这样做。 – Quentin
感谢@Quentin的帮助!我移动了start_form,以便窗体控件位于窗体内部...我仍然需要提交按钮的帮助,它不会正确提交窗体,然后:如何获取我发送给Authentication.plx的变量回到Login.plx? – Dogmatix