繁体   English   中英

PERL / CGI-从输入文本区域中获取的不仅仅是文本

[英]PERL/CGI- gets more than text from input textarea

我一点都不熟悉perl,但是对html有一些了解。 我目前正在尝试从在线程序中配置代码,该程序处理从用户输入的文本以计算并输出一些重要的数字,以便对本地目录中包含文本的大量文件执行相同的操作。 问题出在我缺乏对站点代码如何通过查找&和=分割输入文本的理解,因为输入文本从不包含这些字符,也没有我的文件。 这是在线程序中的一些代码:

if ($ENV{'REQUEST_METHOD'} ne "POST") { 
    &error('Error','Use Standard Input by METHOD=POST'); 
}

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

if ($buffer eq '') { 
    &error('Error','Can not execute directly','Check the usage'); 
}

$ref = $ENV{'HTTP_REFERER'};

@pairs = split(/&/,$buffer);

foreach $pair (@pairs) {
    ($name,$value) = split(/=/,$pair);
    if ($name eq "ATOMS") { $atoms = $value; }

然后,使用这些“对”来适当地计算所需的数字。 用户的输入只是一个名为“ ATOMS”的文本区域,表单操作是cgi脚本:

<form method=POST action="/path/to/the/cgi/file.cgi">
<textarea name="ATOMS" rows=20 cols=80></textarea>
</form>

我省略了html和perl代码的次要细节。 到目前为止,我所能做的就是以文本格式从给定目录中的所有文件中获取所有内容,但是当我将其输入到使用textarea文本来计算值的脚本中(代替变量$ buffer),它不起作用,我怀疑这是由于拆分代码所致,无法找到&和=符号。 代码如何从联机脚本中获取这些符号,以及如何实现将其用于本地文件? 让我知道是否需要其他信息,在此先感谢!

编码方案形式(默认情况下)用于通过HTTP POST数据,该形式由以&字符分隔的key=value对(因此= )组成。

后者对您的表单没有多大影响,因为它只有一个控件。

这在HTML 4规范中进行非常简洁描述, 在HTML 5规范中进行了更详细的描述。

如果您不处理表单中的数据,则应删除所有表单解码代码。

不确定从何处获得该代码,但这是史前的(从上个千年开始)。

您应该可以将其全部替换为。

use CGI ':cgi';

my $atoms = param('ATOMS');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM