【问题标题】:How to obtain user input from perl script running in apache web server?如何从运行在 apache Web 服务器中的 perl 脚本获取用户输入?
【发布时间】:2016-03-23 10:19:55
【问题描述】:

我有一个运行最新的 Raspbian 映像并安装了 apache2 的树莓派。我的 /usr/lib/cgi-bin 目录中有一个 perl 脚本,我在没有 Internet 访问的本地临时网络上使用它。

这是我的 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 文件中。如果我可以编写一个简单的按钮,当按下该按钮时,它可以在服务器端执行一个简单的命令,我可以完成剩下的工作。

【问题讨论】:

  • 你能创建一个POSTs 到你的脚本的表单吗?

标签: apache perl cgi


【解决方案1】:

这是一个脚本,可帮助您开始使用 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

【讨论】:

  • 太棒了,非常感谢。这正是我所需要的!
猜你喜欢
  • 1970-01-01
  • 2014-03-27
  • 2018-01-30
  • 2015-05-08
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 2015-02-02
  • 2018-01-15
相关资源
最近更新 更多