标签: cgi

为什么我的CGI脚本抱怨"无法在@INC中找到CGI/Session.pm"?

我有一个html文件,它将接受并发送登录名和密码.它被发送到login.cgi文件.

**

  • html文件

**

<form method="POST" action="login.pl">
<table >
<tr>
    <td>Username </td>
    <td bgcolor="lightgrey"><input type="text" name="usr" size="20"></td>
</tr>
<tr>
    <td>Password </td> 
    <td bgcolor="lightgrey"><input type="password" name="pwd" size="20"></td>
</tr>
<tr>
    <td><input type="submit" id ="Login" value="Login" name="login"/> </td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

**

  • 特等

**

#!/usr/bin/perl

  # login.pl
  use CGI;
  use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
  use CGI::Session ( '-ip_match' );

  $q = new CGI;

  $usr = $q->param('usr');
  $pwd = $q->param('pwd');

  if($usr ne '')
  {
      # process the form
      if($usr eq "demo" and $pwd eq "demo")
      { …
Run Code Online (Sandbox Code Playgroud)

perl cgi

1
推荐指数
1
解决办法
2万
查看次数

为什么cgi脚本必须保留在cgi-bin文件夹中?

为什么cgi脚本必须保留在cgi-bin文件夹中?

与public_html文件夹和cgi-bin文件夹中的插入python脚本(或php脚本或任何其他脚本)有什么区别?

我不明白: -

apache webserver cgi cgi-bin

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

Web脚本脚本

我想知道是否有任何方法可以使用Bash(Shell Script)通过CGI制作网页,如Perl,C++等.如果有任何办法,我可以在哪里找到一个好的免费托管服务?

bash cgi

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

如何在perl中从索引文件中调用pm文件?

我想在perl中使用cgi-bin文件夹中的文件,我想从index.cgi中调用它们当我这样做时:使用cgi-bin/file_name它不起作用,我该怎么做?

indexing perl cgi

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

在Debian Lenny的Apache 2.2下Perl CGI或CGI :: Fast

我在Debian Lenny机器上有2个不同的Web服务器.一个运行FastCGI(TRAC),另一个Web服务器运行PHP和一些CGI脚本.所以我目前启用了2个Apache2模块(cgi和fcgi)以及相应的2个vhosts设置.我对这两个模块同时运行没有其他特别的兴趣.

所以我想保持只运行Apache fastcgi模块,因为它看起来更有效率.

您能否确认以下评估是对还是正确?
1-我将无法做什么/更改TRAC站点(已经运行fcgi)
2-我必须调整其他Web服务器vhost以使用fastcgi脚本的处理程序设置
3-我将只需要更改perl模块从"使用CGI"到"使用CGI :: Fast"
4-我将能够保留perl现有CGI脚本的其余部分
而不需要其他更改5-我不需要使用CGI :: Apache但CGI: :Web服务器脚本中的FastCGI(i/o当前CGI模块)

我希望我的观点很明确,因为它对我来说有点陌生......

谢谢

编辑:
thx为Naveed和J-16的提示,
这是我做的,如果它可以帮助其他人让它工作:

  • 哼,用CPAN安装CGI :: Fast,然后它运行得更好..
    在Debian上已经安装了libperl

    perl -MCPAN -e shell
    cpan> install CGI::Fast
    
    Run Code Online (Sandbox Code Playgroud)
  • 将文件名从*.cgi更改为*.fcgi,

  • 包括下面由Naveed建议的fastcgi while循环,
  • 使用正确的fastcgi处理程序设置apache vhost(请参阅fastcgi doc)
  • 启用Apache fastcgi模块(a2enmod fastcgi)并禁用cgi模块,
  • 检查Apache设置中的fastcgi.conf文件,
  • 重启Apache,
  • 检查fastcgi作为Apache子进程运行(ps -afx),
  • 修复了一些脚本问题,已经在..但是在运行fastcgi时新出现,如同建议(通过检查Apache日志检测到错误),
  • 编辑:修改文件上传代码,因为初始脚本不再起作用(仍然不明白为什么),所以我不得不用这样一个替换while循环:

    open(FILE,">$upload_dir/$file_name")
    while ($bytes_count = read($file_query,$buffer,2096)) {
    $size += $bytes_count;
    print FILE $buffer;
    }
    close(FILE);
    
    Run Code Online (Sandbox Code Playgroud)
  • 完成.

世界还不完美,但终于有效了.

apache perl upload cgi fastcgi

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

在Perl CGI中正确编程/从不同的perl cgi文件访问相同的数据

我是Perl CGI编程的新手,并且有一些问题.目前我有1个HTML页面和一堆perl页面.用户从HTML页面开始输入他们的姓名和地址.然后,此表单调用Perl CGI文件.现在,当这个Perl文件执行时,它会生成一些用户将看到另一个页面的HTML.现在在perl文件生成的HTML中,还有另一个调用另一个CGI脚本的表单.这继续,所以我基本上每个页面都有一个Perl CGI文件.

这是用CGI做事的正确方法吗?

我遇到的问题是我不知道如何分享所有这些perl文件的信息,因为它们只是通过表单的动作相互通信.

我有一个小购物车,因此需要能够从多个页面初始化,获取和设置它的内容.

如上所述,我如何在文件之间共享数据?

html perl cgi

1
推荐指数
2
解决办法
611
查看次数

如何强制使用CGI的self_url结果而不是;?

它现在输出这样的东西:

?name=fred;age=24;favorite_color=3
Run Code Online (Sandbox Code Playgroud)

如何指示输出?name=fred&age=24&favorite_color=3呢?

perl cgi

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

如何验证我的Perl CGI脚本的输入,以便我可以安全地将其传递给shell?

我是Perl和复杂正则表达式的新手.我的意思是我之前使用过正则表达式的*,但没有比这更复杂.在下面的脚本中,我知道有一个非常大的安全漏洞,可以在其中注入和运行perl代码,以便即使是shell也可以执行任何命令.在试图阻止这种注射时,我逐渐意识到正则表达式比我想象的要困难得多.我正在使用的书说要使用它的组合

die "The specified user contains illegal characters!"
      unless($user =~/^\w+$/);
Run Code Online (Sandbox Code Playgroud)

我相当肯定这意味着来自用户的输入必须以多个单词开头,但我不确定这是如何阻止注入命令的,因为它从不检查分号.我认为除非条款应该更像

unless($user=~/^\w+;\w$/);
Run Code Online (Sandbox Code Playgroud)

但是,似乎都不起作用.对此的任何帮助都会很棒,因为我真的很想理解这一点.谢谢!

#!/usr/bin/perl

use CGI;
use CGI::Carp qw(fatalsToBrowser);
$q = new CGI;

print $q->header,
    $q->start_html('Finger User'),
    $q->h1('Finger User'),
print "<pre>";

$user = $q->param("user");

#die "the specified user contains illegal characters!"
#   unless ($user =~ /ls/);
if (!($user =~ /^\w*;\w*$/)){
    print `/usr/bin/finger -s $user`;
}

print "</pre>";
print $q->end_html;
Run Code Online (Sandbox Code Playgroud)

regex security perl cgi

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

cgi/perl/html - 打印成html时要转义的字符是什么?

我有一个输入文件,我需要直接打印到一个HTML页面.

我确实$inputfile =~ s/\n/<br>/g;在将这个$ inputfile打印到html时,是否还有其他特殊字符,我应该注意除了<和>之外的其他特殊字符?

html perl cgi

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

如何从cgi-bin提供HTML?

我在OpenWrt 12.09上运行uhttpd.我在/ www/cgi-bin/test上有一个shell脚本,如下所示:

#!/bin/sh
echo "Content-type: text/html"
echo "<p>It works!</p>"
Run Code Online (Sandbox Code Playgroud)

我通过这样做给了文件执行权限chmod +x.所有者是root,uhttpd以root身份运行.

现在,当我去的时候,http://192.168.1.1/cgi-bin/test我得到一个错误:

The CGI process did not produce any response
Run Code Online (Sandbox Code Playgroud)

系统或内核日志中没有错误.

我可以去http://192.168.1.1/cgi-bin/luci获取LuCI登录页面,因此其他CGI脚本正在运行.该文件具有不同的shebang(#!/usr/bin/lua)但两个脚本具有相同的权限和所有者.

我究竟做错了什么?

html bash cgi openwrt sh

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

标签 统计

cgi ×10

perl ×7

html ×3

apache ×2

bash ×2

cgi-bin ×1

fastcgi ×1

indexing ×1

openwrt ×1

regex ×1

security ×1

sh ×1

upload ×1

webserver ×1