2015-11-04 85 views
0

下面的代码将输入的名称字段输入到HTML表单中,并输出“hello [entered name]”你好吗?在表单中还有一个男性或女性性别选择。我希望CGI脚本将背景颜色更改为绿色,如果选择男性和黄色,如果选择女性。现在颜色是静态的(粉红色)。我一直试图让它工作,但没有运气根据perl中的选择更改背景颜色CGI

#!/usr/bin/perl 
use CGI::Carp qw(fatalsToBrowser); 

component parts 


    $qstring = $ENV{'QUERY_STRING'}; 
    @pairs = split(/&/, $qstring); 
    foreach $pair (@pairs) { 
      ($name, $value) = split(/=/, $pair); 
      $value =~ tr/+/ /; 
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 
      $FORM{$name} = $value; 
    } 

    &thank_you; 
    #} 

    sub thank_you { 

    print "Content-type: text/html\n\n"; 

    print <<EndStart; 

    <html> 




    <body bgcolor="#ff69b4" value="F" > 

    <hr> 

    EndStart 

     print "<p>hello</p>\n"; print "<blockquote><em>$FORM{name} how are you </em></blockquote>\n\n"; 

    print <<EndHTML; 

    </body> 
    </html> 

    EndHTML 

    exit(0); 

部分的HTML代码

What is your gender? <input type="radio" name="gen1" value="M"> male <br> 
       <input type="radio" name="gen2" value="F"> female <br> 

name: <input type="text" name="name"><br> 
+0

为什么你不编辑你的问题,并包括你到目前为止尝试过的? –

+0

写了整个bgcolor语句。我记得尝试atm的值是=“F”。 F女 –

+1

我会直言不讳:这段代码有很多问题。如果我们暂时忽略所有这些问题并专注于手头的问题,我们仍然没有足够的信息来帮助您。包含性别的表单字段的名称是什么?什么是可能的价值?如果您希望获得帮助,则需要使用该信息编辑您的问题。 –

回答

3
0的

无线组需要共享一个名称。你也应该学会爱标签。

<label><input type="radio" name="sex" value="male"> male</label> <br> 
<label><input type="radio" name="sex" value="female"> female</label> <br> 

由于您使用的是CGI,我已经拉入了一个CGI库。请注意,CGI不被认为是最佳实践,您应该考虑离开它。

CGI对象上的param方法将允许您从查询字符串中读取表单数据。

大约二十年前,CSS被添加到web开发堆栈。将其用于演示文稿代码。

然后根据您的输入数据在人体上设置类。这最好使用模板完成。

另请注意:body元素没有“value”属性。

#!/usr/bin/env perl 

use strict; 
use warnings; 
use CGI; # I strongly suggest moving to Plack and FastCGI 
use Template; 

my $q = CGI->new; 
my $sex = $q->param("sex"); 

if ((!defined $sex) || ($sex ne "male" && $sex ne "female")) { 
    $sex = ""; 
} 

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

my $template = Template->new; 
$template->process(\*DATA, {sex => $sex}); 

__DATA__ 
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf=8"> 
     <title>Demo</title> 
     <style> 
      body { 
       background-color: pink; 
      } 

      .male { 
       background-color: green; 
      } 

      .female { 
       background-color: yellow; 
      } 
     </style> 
    </head> 
    <body [% IF sex %]class="[% sex | html %]"[% END %]> 
     <h1>Your content here</h1> 
    </body> 
</html> 
+0

谢谢!这就是我一直在寻找的! –

+0

嘿,很抱歉给您带来不便,但是有没有办法让表单域中输入的名称出现而不是“您的内容在这里”?我目前无能为力。我曾经这样做过的剧本。在您点击“提交”之后,它会返回此人的姓名。我感谢您的帮助! –

+0

使用'$ q-> param(“NAME_OF_FIELD”)',然后以与其他表单数据相同的方式将其包含在模板中。 – Quentin