标签: cgi

如何在Perl中阅读使用POST发送的URL-Data?

我正在尝试读出从页面中的表单发送到我的Perl脚本的POST数据.我用Google搜索并发现:

read(STDIN, $param_string, $ENV{'CONTENT_LENGTH'})
Run Code Online (Sandbox Code Playgroud)

读取整个Data-String,并以.的形式将整个字符串写入$ param_string

Param1=Value1&Param2=Value2&Param3=Value3
Run Code Online (Sandbox Code Playgroud)

通过将它拆分到正确的位置,我得到了必要的数据.

但我想知道为什么我的$ param_string是空的.

当我用GET尝试整个事情时:

$param_string = $ENV{'QUERY_STRING'};
Run Code Online (Sandbox Code Playgroud)

一切正常.有人有想法吗?

forms perl post cgi query-string

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

在perl中打包('C4',$ digits)

在使用Perl编写CGI应用程序时,请使用以下代码来记录访问者.

(my $digits = #ENV{'REMOTE_ADDR'}) =~ s/\.//g;
my $address = pack("C4", $digits);
Run Code Online (Sandbox Code Playgroud)

在perldoc,

打包模板,列表

"C4"应该是模板.这是什么意思?

perl cgi

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

为什么 PWD 为空以及如何解决?

我正在使用 lighttpd 并编写了以下 cgi 脚本:

main(){
    printf("Content-type: text/html\n\n");
    char * pwd ="";
    pwd=getenv("PWD");
    printf ("The current path is: %s",pwd);
}
Run Code Online (Sandbox Code Playgroud)

结果是

The current path is: (null)
Run Code Online (Sandbox Code Playgroud)

嗯,我不明白为什么。而且我不知道如何找到执行脚本的路径。我正在寻找带有路径的 args[0],并为此使用了 pwd,但也许我应该切换到不同的东西。

更新

不工作也是

char cwd[_PC_PATH_MAX+1];
getcwd(cwd, _PC_PATH_MAX+1);
Run Code Online (Sandbox Code Playgroud)

cwd 是“”。如果我停止使用房间 1408 作为我的数据中心,我的脚本可能知道它在哪里。:P

c cgi lighttpd

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

为什么我的Perl CGI脚本显示不呈现html代码(不是源代码)而不是页面?

当我从shtml运行它时,我的perl脚本显示渲染的代码

<!--#include virtual="/cgi-bin/Script.cgi"-->
Run Code Online (Sandbox Code Playgroud)

当我直接从地址字段(site.com/cgi-bin/Script.cgi)运行它时,我看到html代码.为什么会这样?谢谢.

html apache perl cgi

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

进度条通过Python CGI

#!/usr/bin/env python

import time
import sys
import os
for i in range(10):
    progress_bar = \
        """
        <!DOCTYPE html>
        <html>
        <body>
        <p>Display a gauge:</p>
        <meter value="%s" min="0" max="10">2 out of 10</meter><br>
        </body>
        </html>
        """%(i)

    print  progress_bar
    sys.stdout.flush() # do this after the print
    time.sleep(1.0)
Run Code Online (Sandbox Code Playgroud)

在这里,我试图创建一个进度条,其中'i'是进度指示器. 在此输入图像描述.屏幕截图如下.我所期望的是,通过使用sys.stdout.flush(),可以消除以前的HTML打印,仅保留当前"i"的进度,但它不起作用.任何想法如何实现我的目标?

html python cgi progress-bar

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

Perl脚本中的换行符

很抱歉这个新手问题,但是Perl脚本中的换行符不起作用。也就是说,下面的脚本中的\ n和\ t根本不起作用,它仅显示“ Hello Perl!Hello CGI!”。在一排。通常,此现象的原因是什么?如果有人知道,请告诉我。非常感谢你。

#!/usr/bin/perl

print "Content-Type: text/html; charset=UTF-8\n\n";

print "Hello Perl!\n";
print "Hello \t CGI!";
Run Code Online (Sandbox Code Playgroud)

perl cgi

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

内部服务器错误,非常简单的python脚本

我是python的新手,我正在尝试运行一个简单的脚本(在Mac上,如果这很重要).

现在,这段代码,给我内部服务器错误:

#!/usr/bin/python

print 'hi'
Run Code Online (Sandbox Code Playgroud)

但这个就像一个魅力(只有额外的'打印'命令):

#!/usr/bin/python
print

print 'hi'
Run Code Online (Sandbox Code Playgroud)

任何解释?谢谢!

更新:

当我从终端运行这个脚本时,一切都很好.但是当我从浏览器运行它时:

http://localhost/cgi-bin/test.py
Run Code Online (Sandbox Code Playgroud)

我得到这个错误(再次,只有我没有添加额外的打印命令).我当然使用Apache服务器.

python apache macos cgi

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

CGI脚本是一种单独的脚本语言吗?

我是脚本语言的新手,我们将在9月份开始使用一些CGI脚本.我在CGI和Perl之间感到困惑.

它们是相同的,还是两种不同的语言?

perl cgi

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

如何通过Template :: Toolkit中的mod_perl处理程序生成动态内容?

我只是想Template::Toolkit在我的centos上使用perl模块来生成动态Web内容.本教程和cpan站点上给出的教程是为了将mod_perl绑定到Apache.我在我的centos上使用nginx.我试过分配,但我不太喜欢服务器,所以每次都失败了.

任何人都可以帮我将mod_perl与nginx集成吗?或者有替代方案吗?

perl cgi mod-perl nginx template-toolkit

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

从 Perl CGI 执行 PHP

首先,作为背景,我试图在创建新实体时加密我们在服务器上的数据。这是在一个起源于 Perl CGI 系统的遗留系统上,并且有一个单独的部分是 PHP。Perl 部分创建组,后来实现了 PHP 以对其进行加密。

我正在尝试从 Perl CGI 文件执行 PHP 加密脚本。我试过使用:

exec("/path/to/file arg1 arg2")
system("/path/to/file arg1 arg2")
backtick operator /path/to/file arg1 arg2
open ("/path/to/file arg1 arg2 |)

我还尝试直接指向 /bin/php 并将文件作为参数传递给每种情况。到目前为止,我唯一发生的事情是:

  1. 打印 exec/system 的输出...将 Perl 文件(甚至不是 php 文件)作为文本生成,我在其他任何地方都没有看到任何提到这种情况的地方,但我所看到的只是 Perl,而不是 CGI 和珀尔在一起。
  2. 没有数据。如果我输出 $! 从 Perl 中,我在使用系统时遇到非法搜索错误,但其他人将其留空。所有这些都返回 0,就好像 exec/system/... 已经运行一样,但服务器端没有任何变化。

从我在线阅读的内容来看,我认为 CGI 可能以某种形式的“受保护”模式运行,该模式禁用了某些文件上的 exec/system/open/backtick 命令,但我不确定这就是问题所在。据我所知,没有迹象表明许可受到限制。如果有人有任何见解,非常感谢。如果您需要更多信息,请告诉我。

php perl cgi

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

标签 统计

cgi ×10

perl ×7

apache ×2

html ×2

python ×2

c ×1

forms ×1

lighttpd ×1

macos ×1

mod-perl ×1

nginx ×1

php ×1

post ×1

progress-bar ×1

query-string ×1

template-toolkit ×1