Javascript CGI脚本-如何创建确认框弹出窗口?

Javascript CGI脚本-如何创建确认框弹出窗口?,javascript,perl,cgi,Javascript,Perl,Cgi,我正在运行一个CGI脚本来阻止安全设备中的地址(使用wget命令),我希望在加载过程中弹出一个确认框,并询问是/否问题,如果答案为否-退出,如果答案为是,则继续阻止地址。有什么想法吗 #!/usr/bin/perl -w use CGI qw(:standart escapeHTML); use CGI qw(:param); use LWP::Simple; $pass ='xxxxxx'; $rip = param('ip'); $addr=$ENV{'REMOTE_ADDR'}; prin

我正在运行一个CGI脚本来阻止安全设备中的地址(使用wget命令),我希望在加载过程中弹出一个确认框,并询问是/否问题,如果答案为否-退出,如果答案为是,则继续阻止地址。有什么想法吗

#!/usr/bin/perl -w
use CGI qw(:standart escapeHTML);
use CGI qw(:param);
use LWP::Simple;
$pass ='xxxxxx';
$rip = param('ip');
$addr=$ENV{'REMOTE_ADDR'};
print "Content-type: text/html \n\n";
print "<html>";
print "<head> <title>Block IP </title></head>";
print "<body>";

if($rip=~m/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
{
  system("wget \'https://x.x.x.x/policy/test?
  deviceuser=user1&passd=$password&ip=$rip&policy=Quar_1D\' -O \/dev\/null --no-
  check-certificate 2>&1 | grep response -A 3");
  print "<script type='text/javascript'>";
}
else 
{
  if(!$rip)
  {
    print '<script type=\'text/javascript\'>
    var gip=prompt(\'enter an ip  to block\',\'\');
    if (!gip) {
        window.location=\'http://x.x.x.x/cgi-bin/block.cgi\';
    } else {
        window.location="http://x.x.x.x/cgi-bin/block_tp.cgi?ip="+gip;
    }';
  }
}
print "</script></body></html>";
#/usr/bin/perl-w
使用CGI qw(:标准escapeHTML);
使用CGI qw(:参数);
使用LWP::Simple;
$pass='xxxxxx';
$rip=参数(“ip”);
$addr=$ENV{'REMOTE_addr'};
打印“内容类型:text/html\n\n”;
打印“”;
打印“块IP”;
打印“”;
如果($rip=~m/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
{
系统(“wget”https://x.x.x.x/policy/test?
deviceuser=user1&passd=$password&ip=$rip&policy=Quar\u 1D\'-O\/dev\/null--否-
检查证书2>&1 | grep响应-A 3“;
打印“”;
}
其他的
{
如果(!$rip)
{
印刷品
var gip=prompt(\'输入要阻止的ip\',\'\');
如果(!gip){
window.location=\'http://x.x.x.x/cgi-bin/block.cgi\';
}否则{
window.location=”http://x.x.x.x/cgi-bin/block_tp.cgi?ip=“+gip;
}';
}
}
打印“”;

这个问题显示了对HTTP交互如何工作的根本误解。HTTP是一种无状态协议。客户端(可能是浏览器)发送请求,服务器发送响应。下一个请求/响应周期与上一个请求/响应周期没有连接,除非开发人员做了一些事情来存储有关状态的信息。使用简单的CGI机制,您无法在处理请求的过程中完成一半,然后停下来向用户询问更多信息

您可以通过编写Javascript并向web服务器发出Ajax请求来实现所需的功能。但是考虑到您对web开发的知识水平,我强烈建议您要么雇佣一名程序员,要么花一年左右的时间来完成这项工作

此外,在您的CGI程序中还发生了一些奇怪的事情

  • 您使用
    -w
    而不是更现代的
    使用警告
  • 您没有
    使用strict
    (因此,您没有声明任何变量)
  • 加载CGI模块两次
  • 您拼写的
    :standard
    错误(但您没有使用任何标准函数)
  • 您可以显式加载
    escapeHTML
    ,但从不使用它
  • 您加载LWP::Simple,但随后忽略它,转而将其输出到
    wget
  • 对于调用
    wget
    的结果,您什么也不做
  • 不必要地转义引号字符

您是否需要Perl中的实际弹出窗口或确认是/否?您已经有了丑陋的javascript假表单-为什么不也用javascript进行确认?您可以发送一个示例吗?用户必须使用计算机鼠标单击是或否。我对语法有一些问题。脚本从javascript中忽略。你能帮我解释一下语法吗?