标签: cgi

运行CGI应用程序而无需从HTML重定向

我有一个从cgi应用程序填充的html页面.现在,当我通过表单在我的html页面上进行更改时

<form action="/cgi-bin/Lib.exe" method=POST name="checks" ID="Form2">
Run Code Online (Sandbox Code Playgroud)

这需要我从
http://localhost/index.html

http://localhost/cgi-bin/Lib.exe ,其中CGI输出我放在那里的一些调试行.然后我必须手动返回索引才能看到它已更新.

当html表单向cgi应用程序发送请求时,CGi应用程序对数据库进行更新并重写索引html.我如何留在索引页面并看到它更新?(我正在运行轻量级的GoAhead Web服务器,C中的CGI和HTML,JS)

谢谢.

redirect cgi refresh

0
推荐指数
1
解决办法
2464
查看次数

C中的fopen/fread/fgets是否是PID安全的?

各种用户正在浏览100%用C(CGI)编程的网站.每个网页都使用fopen/fgets/fread从文件中读取常用数据(如导航栏).如果各种各样的人浏览同一页面,每次打电话给fopen/fgets/fread会互相干扰吗?如果是这样,如何在C中解决?(这是一个Linux服务器,编译是用gcc完成的,这是用C编程的CGI网站.)

例:


FILE *DATAFILE = fopen(PATH, "r");
if ( DATAFILE != NULL )
{
    while ( fgets( LINE, BUFFER, DATAFILE ) )
    {
        /* do something */
    }
}
Run Code Online (Sandbox Code Playgroud)

c cgi fgets fread web

0
推荐指数
1
解决办法
976
查看次数

如何在perl cgi上使用stdin

我是perl的新手,我想在我的脚本上使用屏幕输入.这是我的脚本,我希望从键盘输入IOS命令.可以有人告诉我我错在哪里.问题我现在的脚本没有读取我的键盘输入,我不确定是否可以处理我的情况.谢谢!!

# ### Show ######################################################### 
               $cmd = <STDIN>;
                chomp ($cmd);
               $show_error = "";
              if ($ssh_switch eq 'yes') {
                   ssh_access();
               }
               print "\n",h2($host . ' - ' . $cmd);
                @output=$cmd;
                print hr(),"\n";
               }
}
#########################################################################
Run Code Online (Sandbox Code Playgroud)

perl cgi

0
推荐指数
1
解决办法
3690
查看次数

如何在CGI脚本中的图像上创建链接?

我可以使用以下代码通过CGI.pm在我的CGI脚本中成功显示图像:

#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);
use CGI qw/:standard/;
print img {src => "../images/myimage.png", align=>"CENTER"};
Run Code Online (Sandbox Code Playgroud)

但是,当我想要做的是在该图像中包含URL时,每当人们点击该图像时它将指向所需的URL,此代码失败:

print img {src => "../images/myimage.png", align=>"CENTER", -href=>"www.google.com"};
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法呢?

perl cgi

0
推荐指数
1
解决办法
2413
查看次数

分隔符编码的问题

如果我按原样运行这个脚本,它就可以了.
但为什么这不起作用cgi
当我使用_\01_而不是_\00_它也适用cgi.

#!/usr/bin/env perl
use warnings;
use 5.012;


###    script_1.cgi    #########################################

my @array = ( '1524', '2.18 MB', '09/23/03', '_cool_name_', 'type' );
my $row = join "_\00_", @array;
say $row;
# submit $row to script_2.cgi


###    script_2.cgi    #########################################
# ...
# my $row = $cgi->param('row');
# my $name;

if ( $row =~ /_\00_([^\00]+)_\00_type\z/ ) {
#   $name = $1;
    say "Name: <$1>";
} else {
    die "<$row> $!";
}

# Software …
Run Code Online (Sandbox Code Playgroud)

regex perl encoding ascii cgi

0
推荐指数
1
解决办法
75
查看次数

如何通过CGI触发浏览器保存文件?

我有以下隐藏的形式:

<form id='export_svg_container_single_form'
      action='exportSVG.pl'
      method='post'
      target='_blank'
      style='display:none;'>
  <input type='text'
         id='export_svg_container_single_form_data'
         name='export_svg_data'
         style=';' />
</form>
Run Code Online (Sandbox Code Playgroud)

export_svg_data在表单提交之前,字段值将填充SVG文档.

提交时,这将作用于以下简单的CGI脚本,用Perl编写:

#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use CGI::Pretty qw/:standard/;

my $val = param('export_svg_data');
print "Content-Type:image/svg+xml\n";
print "Content-Disposition: inline\n";
print "Content-Description: File to download\n\n";
print $val;
Run Code Online (Sandbox Code Playgroud)

提交时,隐藏表单还会打开一个新选项卡并显示(在本例中)SVG文档.然后,最终用户可以将窗口保存到文件中.

相反,在提交表单时,我想要做的是让浏览器自动打开" 保存"或" 另存为"对话框,以便用户可以选择文件名并保存文档,而不是在浏览器窗口中呈现SVG.

我如何使用JavaScript或对CGI脚本进行适当的更改?(我想保持父表单页面不变,即打开新的选项卡或窗口,如果需要的话.)感谢您的建议.

为了再次澄清,我正在寻找一个解决方案,它会打开" 保存"对话框.我不希望脚本确定文件名并将其保存在任意位置,无需任何用户干预.

html browser perl user-interface cgi

0
推荐指数
1
解决办法
2433
查看次数

perl-cgi程序中的500内部服务器错误

我收到错误"内部服务器错误.服务器遇到内部错误或配置错误,无法完成您的请求."

我在html中提交表单并获取其值.

HTML代码(index.cgi)

#!c:/perl/bin/perl.exe
print "Content-type: text/html; charset=iso-8859-1\n\n";
print "<html>";
print "<body>";
print "<form name = 'login' method = 'get' action = '/cgi-bin/login.pl'> <input type = 'text' name = 'uid'><br /><input type = 'text' name = 'pass'><br /><input type = 'submit'>";
print "</body>";
print "</html>";
Run Code Online (Sandbox Code Playgroud)

用于获取数据的Perl代码(login.pl)

#!c:/perl/bin/perl.exe
use CGI::Carp qw(fatalsToBrowser);
my(%frmfields);
getdata(\%frmfields);
sub getdata {
    my ($buffer) = "";
    if (($ENV{'REQUEST_METHOD'} eq 'GET')) {
        my (%hashref) = shift;
        $buffer = $ENV{'QUERY_STRING'};
        foreach  (split(/&/,$buffer)) {
            my ($key, $value) = split(/=/, $_); …
Run Code Online (Sandbox Code Playgroud)

forms perl cgi cgi-bin internal-server-error

0
推荐指数
1
解决办法
2060
查看次数

perl从数据库读取,字段具有\ 0\t作为普通文本

从一开始就道歉.我无法提供我正在使用的代码.

我通过DBI查询数据库并使用perl通过fetchrow-array打印输出并打印$ variable

但是数据库中的字段包含\ 0\t\r \n等作为普通文本的一部分.

当通过变量和打印命令打印这些字段时,这些\ t\r\0文本字符被错误地打印为制表符,换行符,十六进制字符.我认为无法告诉print忽略任何像这样的字符串.

有任何想法吗?

谢谢.

perl cgi dbi

0
推荐指数
1
解决办法
210
查看次数

Perl(使用CGI)如果没有包或对象引用,则无法调用方法"header"

好吧,十年来第一次使用Perl,有点生疏.从那时起思考也许是一些更新(天才吧?)

Alrighty,这是Perl 5,版本16,颠覆3 x86_64-linux-thread-multi,在AWS micro上有29个已注册的补丁.

Perl附带了它,我只是安装了perl-CGI perl-Data-Dumper

#!/usr/bin/perl
use CGI;                                        # load cgi routines
my $q = CGI>new;                                # cgi object
print   $q->header(),
        $q->start_html("Hello World"),
        $q->h1('Hello'),
        $q->end_html;
~
Run Code Online (Sandbox Code Playgroud)

当我逐步构建程序时,似乎有一个简单而直截了当的可能性.但是如果我在命令行(或浏览器)运行它,我会遇到错误.

如果没有创建第4行的包或对象引用,则无法调用方法"header".

第4行是打印$ q-> header(); "create"是文件名.

有任何想法吗?让我了解Perl 2017的最新消息?生锈的问题总是非常简单.

oop perl cgi

0
推荐指数
1
解决办法
88
查看次数

Perl CGI app疑难解答 - 无法通过包找到对象方法"new"

我继承了一个旧的perl应用程序,我正试图复活.可悲的是,我不是一个perl人(而且只是一个新手开发人员).通过在线查找解决方案,我已经成功解决了这个应用程序的其他问题,但到目前为止我已经找不到解决方案了,所以觉得是时候征求意见了.

我找到了一个障碍,寻找有关如何解决我收到的错误的建议.

这是错误:

Can't locate object method "new" via package "CGI" at 
/opt/app/htdocs/lib/APP/CGI.pm line 26.Compilation failed 
in require at /opt/app/htdocs/lib/APP/CGI.pm line 4.
Run Code Online (Sandbox Code Playgroud)

这是/opt/app/htdocs/lib/APP/CGI.pm的前26行:

 package APP::CGI;

 use CGI;

 use CGI::Carp qw(fatalsToBrowser set_message);
 use APP::Error;

 BEGIN {
      sub handle_errors {
         my $msg = shift;
         &APP::Error::error($msg);
     }
     set_message(\&handle_errors);

 }

 use strict;
 # hack:  added these to resolve "can't locate" errors
 use lib qw(/opt/app/htdocs);
 use lib qw(/opt/app/htdocs/lib);
 use lib qw(/opt/app/htdocs/lib/APP);
 use lib qw(/opt/app/htdocs/lib/APP/Service);
 # end hack
 use vars qw/ $CGI %REDIRS /;

 $CGI = …
Run Code Online (Sandbox Code Playgroud)

perl cgi

0
推荐指数
1
解决办法
139
查看次数

标签 统计

cgi ×10

perl ×8

ascii ×1

browser ×1

c ×1

cgi-bin ×1

dbi ×1

encoding ×1

fgets ×1

forms ×1

fread ×1

html ×1

internal-server-error ×1

oop ×1

redirect ×1

refresh ×1

regex ×1

user-interface ×1

web ×1