如何从apache web服务器上运行的perl脚本获取用户输入?

时间:2015-12-17 03:45:37

标签: apache perl cgi

我有一个覆盆子pi运行最新的Raspbian映像并安装了apache2。我在/ usr / lib / cgi-bin目录中有一个perl脚本,我在没有Internet访问权限的本地ad-hoc网络上使用。

这是我的perl文件:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
$config=`cat /home/pi/Desktop/AutoPi/AutoPi.config`;
print <<"EOF";
<HTML>
<HEAD>
<TITLE>Hello, world!</TITLE>
</HEAD>
<BODY>
<H1>Hello, world!</H1>
<br><br>
</BODY>
</HTML>
EOF

这很好用,我可以使用perl系统命令,例如:

$my_dir=`pwd`;

...并将其传递给用户看到的网页。这很棒。但是,我需要能够让用户单击按钮并执行代码。

我很乐意使用perl,并希望尽可能将所有内容保存在perl文件中。如果我可以编写一个简单的按钮,按下后,可以执行一个简单的命令服务器端,我可以完成剩下的工作。

1 个答案:

答案 0 :(得分:2)

这是一个脚本,可以帮助您开始使用CGI.pm从提交的表单中访问参数。

#!/usr/bin/perl

use strict;
use warnings;

use CGI qw(escapeHTML);
#use CGI::Carp qw(fatalsToBrowser);

my $q = CGI->new;

my $text = $q->param('text') || '';

print $q->header('text/html; charset=utf-8');

my $safe_text = escapeHTML($text);

print <<"EOF";
<html>
<head>
  <title>Hello, world!</title>
</head>
<body>

  <h1>Hello, world!</h1>
  <div>$safe_text</div>

  <form method="post">
    <textarea name="text" rows="5" cols="40">$safe_text</textarea><br>
    <input type="submit" value="Submit">
  </form>

</body>
</html>
EOF

CGI.pm并不是一种真正推荐的构建Web应用程序的方法,但听起来你很开心所以去吧。尝试删除use CGI::Carp行上的“#”。如果脚本仍然运行,那么请保持这种状态,这样您就会在浏览器中收到一些错误消息。您还需要运行此命令来查找错误:

tail -f /var/log/apache2/error.log