Web表单/ CGI脚本:用户输入“word”,IFrame显示“word”.html

时间:2010-05-08 06:40:43

标签: php forms cgi

好吧,我承认自己是一名设计师,我不太了解如何从表格中的服务器处理数据......(基本上是整个编程部分)。基本上我有一个文本字段,用户输入类似“apple”的东西,这会被发送到服务器,然后显示我在IFrame目录中的apple.html页面。如果有人能告诉我如何在PHP脚本或Perl中执行此操作,将非常感谢!我认为这是一个好的开始,它比这更复杂...我后来必须将“苹果”转换成像2321这样的东西,而不是显示2321.html。

如果有人能找到这样做的CGI脚本,谢谢!

1 个答案:

答案 0 :(得分:1)

以下是用Perl编写的完整的CGI程序。它完全符合您的要求。除了您编号的水果结果文档之外,如果查找不成功或者用户根本没有输入水果,您还需要一个后备文档sorry-no-such-fruit.html

#!/usr/bin/perl -T
use strict;
use warnings;
use CGI ();

my %fruit_codes = (
    apple   => '2321.html',
    banana  => '1234.html',
    coconut => '8889.html',
);

my $c = CGI->new;
my $fruit_parameter = $c->param('fruit_name');
my $iframe_document;

if (defined $fruit_parameter and exists $fruit_codes{$fruit_parameter}) {
    $iframe_document = $fruit_codes{$fruit_parameter};
} else {
    $iframe_document = 'sorry-no-such-fruit.html';
}

$c->header('application/xhtml+xml');

print <<"END_OF_HTML";
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Fruits</title>
    </head>
    <body>
        <form action="fruits.cgi">
            <fieldset>
                <label for="fruit">Name of the fruit:</label>
                <input id="fruit" name="fruit_name" type="text" />
                <input type="submit" />
            </fieldset>
        </form>
        <iframe src="$iframe_document">
            <a href="$iframe_document">resulting fruit</a>
        </iframe>
    </body>
</html>
END_OF_HTML

1;

如果你想修改这个程序,我给你最重要的安全建议:不要输出用户提供的输入(在这种情况下,$fruit_parameter)未经修改。这可能会被滥用至少跨站点脚本。请专家程序员寻求帮助。