生成 HTML 表格并在一个 PERL/CGI 文件中处理
Generate HTML form and process it in one PERL/CGI file
我正在尝试使用 PERL/CGI 创建一个表单,我想在同一个 CGI 文件中处理该表单中引入的数据。
这是我的代码:
#! /usr/bin/perl
use CGI qw(:standard);
my $cgi = new CGI;
print header, start_html("Shop web"),
h1({-align=>center, -style=>"color:blue;Font-Size: 35pt;"},'Oferta T-shirt' ),
"<p align=\"center\">
\<img src=\"/img/t-shirts.jpg\" width=\"30%\">
<\/p>",
"<br\>
<table align = \"center\" border = \"2\" bordercolor=\"green\" >
<col width=\"120\">
<col width=\"120\">
<col width=\"120\">
<tr>
<th bgcolor=\"lightgray\">Talla</th>
<th bgcolor=\"lightgray\">Color</th>
<th bgcolor=\"lightgray\">Precio</th>
</tr>
<tr>
<td align=\"center\">S</td>
<td align=\"center\">Negro</td>
<td align = \"center\">8 €</td>
</tr>
<tr>
<td align=\"center\">M</td>
<td align=\"center\">Blanco</td>
<td align=\"center\">9 € </td>
</tr>
<tr>
<td align=\"center\">L</td>
<td align=\"center\">Azul</td>
<td align= \"center\">11.5 € </td>
</tr>
<tr>
<td align= \"center\">XL</td>
<td align= \"center\">Rojo</td>
<td align= \"center\">12 € </td>
</tr>
<tr>
<td align= \"center\">XXL</td>
<td align= \"center\">Amarillo</td>
<td align= \"center\">15.5 € </td>
</tr>
</table> ",
"<br />
<h2 align=\"center\"><font color = \"blue\"> Compra tu camiseta</font></h2>
<br>",
"<center>
<form action=\"compra.cgi\" method=\"POST\" >
<input type=\"hidden\" name=\"subject\" value=\"Formulario por email\">
<table>
<tr><td>Dirección de envio</td>
<td><input type=\"text\" name=\"nombre\" size=\"35\"></td>
</tr>
<tr>
<td>Cantidad</td>
<td> <input type=\"text\" name=\"cantidad\" size=\"6\"></td>
</tr>
<tr>
<td colspan=\"2\" align=\"center\">
<br>
<input type=\"submit\" name=\"Enviar\" value=\"Comprar\" style=\"height: 30px; width: 120px\">
</td>
</tr>
</table>
</form>
</center>",
end_html();
换句话说:如何在不创建另一个 CGI 文件来捕获该数据的情况下处理表单中引入的数据。
感谢任何帮助。
#!/usr/bin/perl -w
use CGI qw/:standard/;
print header( 'text/plain' );
$cgi = CGI->new();
if ( $cgi->param )
{
<<< YOU HAVE POST DATA - PROCESS IT >>>
}
else
{
<<< THERE IS NO POST DATA - PRINT YOUR HTML >>>
}
我是这样做的...
您似乎在 20 世纪 90 年代中期编写 Web 应用程序。这至少会更新您从本世纪初开始使用 Perl 的做法。
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw[params header];
use Template;
my $tt = Template->new;
if (params) {
# We have some CGI parameters, extract them, do something
# useful with them and then display a page thanking the user.
my $foo = param('foo');
my $bar = param('bar');
process_user_input($foo, $bar);
$tt->process('thankyou.tt', { foo => $foo, bar => $bar })
or die $tt->error;
} else {
# No parameters, so let's show the user the input form
$tt->process('form.tt')
or die $tt->error;
}
请注意,我们避免使用 CGI.pm 中的 heavily-deprecated HTML 生成函数。相反,我们使用 Template Toolkit,它允许我们将输出分成模板文件(这里称为 form.tt
和 thankyou.tt
)。
请注意,这里有一定数量的 hand-waving,因为我不知道你的参数名称是什么,也不知道你需要用它们做什么。
但这仍然是老技术。最好阅读 CGI::Alternatives 并将您的技术更新到本世纪写的东西。
我正在尝试使用 PERL/CGI 创建一个表单,我想在同一个 CGI 文件中处理该表单中引入的数据。
这是我的代码:
#! /usr/bin/perl
use CGI qw(:standard);
my $cgi = new CGI;
print header, start_html("Shop web"),
h1({-align=>center, -style=>"color:blue;Font-Size: 35pt;"},'Oferta T-shirt' ),
"<p align=\"center\">
\<img src=\"/img/t-shirts.jpg\" width=\"30%\">
<\/p>",
"<br\>
<table align = \"center\" border = \"2\" bordercolor=\"green\" >
<col width=\"120\">
<col width=\"120\">
<col width=\"120\">
<tr>
<th bgcolor=\"lightgray\">Talla</th>
<th bgcolor=\"lightgray\">Color</th>
<th bgcolor=\"lightgray\">Precio</th>
</tr>
<tr>
<td align=\"center\">S</td>
<td align=\"center\">Negro</td>
<td align = \"center\">8 €</td>
</tr>
<tr>
<td align=\"center\">M</td>
<td align=\"center\">Blanco</td>
<td align=\"center\">9 € </td>
</tr>
<tr>
<td align=\"center\">L</td>
<td align=\"center\">Azul</td>
<td align= \"center\">11.5 € </td>
</tr>
<tr>
<td align= \"center\">XL</td>
<td align= \"center\">Rojo</td>
<td align= \"center\">12 € </td>
</tr>
<tr>
<td align= \"center\">XXL</td>
<td align= \"center\">Amarillo</td>
<td align= \"center\">15.5 € </td>
</tr>
</table> ",
"<br />
<h2 align=\"center\"><font color = \"blue\"> Compra tu camiseta</font></h2>
<br>",
"<center>
<form action=\"compra.cgi\" method=\"POST\" >
<input type=\"hidden\" name=\"subject\" value=\"Formulario por email\">
<table>
<tr><td>Dirección de envio</td>
<td><input type=\"text\" name=\"nombre\" size=\"35\"></td>
</tr>
<tr>
<td>Cantidad</td>
<td> <input type=\"text\" name=\"cantidad\" size=\"6\"></td>
</tr>
<tr>
<td colspan=\"2\" align=\"center\">
<br>
<input type=\"submit\" name=\"Enviar\" value=\"Comprar\" style=\"height: 30px; width: 120px\">
</td>
</tr>
</table>
</form>
</center>",
end_html();
换句话说:如何在不创建另一个 CGI 文件来捕获该数据的情况下处理表单中引入的数据。
感谢任何帮助。
#!/usr/bin/perl -w
use CGI qw/:standard/;
print header( 'text/plain' );
$cgi = CGI->new();
if ( $cgi->param )
{
<<< YOU HAVE POST DATA - PROCESS IT >>>
}
else
{
<<< THERE IS NO POST DATA - PRINT YOUR HTML >>>
}
我是这样做的...
您似乎在 20 世纪 90 年代中期编写 Web 应用程序。这至少会更新您从本世纪初开始使用 Perl 的做法。
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw[params header];
use Template;
my $tt = Template->new;
if (params) {
# We have some CGI parameters, extract them, do something
# useful with them and then display a page thanking the user.
my $foo = param('foo');
my $bar = param('bar');
process_user_input($foo, $bar);
$tt->process('thankyou.tt', { foo => $foo, bar => $bar })
or die $tt->error;
} else {
# No parameters, so let's show the user the input form
$tt->process('form.tt')
or die $tt->error;
}
请注意,我们避免使用 CGI.pm 中的 heavily-deprecated HTML 生成函数。相反,我们使用 Template Toolkit,它允许我们将输出分成模板文件(这里称为 form.tt
和 thankyou.tt
)。
请注意,这里有一定数量的 hand-waving,因为我不知道你的参数名称是什么,也不知道你需要用它们做什么。
但这仍然是老技术。最好阅读 CGI::Alternatives 并将您的技术更新到本世纪写的东西。