标签: cgi

如何在没有后备数据库的情况下实现基于FORM的身份验证

我有一个PHP脚本作为CGI程序运行,HTTP Authenticate标头被吃掉并吐出.所以我想实现某种基于FORM的身份验证.作为附加约束,没有数据库,因此不能存储会话数据.

我非常愿意拥有主用户名和密码.我只需要保护应用程序免受不知道这些凭据的入侵者的侵害.

那你将如何实现呢?

饼干?

我可以提供表单,如果它有效,我可以发回一个cookie,它是IP地址的哈希密码.然后我可以阻止页面呈现,除非事物正确解密.但我不知道如何在PHP中实现它.

php authentication cookies cgi http

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

如何从我的网址中删除"cgi-bin"?

我正在嵌入式设备上创建一个小应用程序,它上面运行着一个boa Web服务器.我正在创建一个混合使用纯HTML页面和Perl脚本的Web应用程序来与主应用程序进行交互.有没有办法隐藏一些页面是从设备上的cgi-bin提供的?

我现在拥有以下网址.

我更喜欢的是:

使用上面的URL将我带到相应的index.html或index.pl文档.文件结构和服务器设置的某种组合是否会启用此行为?

我在谷歌搜索过这个,但是你可以想象我在URL中用"cgi-bin"获取搜索结果的页面和页面.我希望以前有人这样做过.

编辑:我应该提一下,我知道如何通过在我的Web根目录中创建单独的文件夹来为纯HTML页面执行此操作,所有文件夹都使用index.html页面.我的问题是让这种类型的解决方案与cgi-bin目录中的.pl或.cgi文件一起使用.

cgi web-applications url-rewriting cgi-bin

6
推荐指数
2
解决办法
3744
查看次数

如何启用'wget'以使用Javascript下载HTML的全部内容

我有一个 网站,我想用Unix下载wget.如果查看文件的源代码和内容,则包含名为SUMMARY的部分.但是在发出这样的wget命令之后:

wget   -O downdloadedtext.txt  http://www.ncbi.nlm.nih.gov/IEB/Research/Acembly/av.cgi?db=mouse&c=gene&a=fiche&l=2610008E11Rik 
Run Code Online (Sandbox Code Playgroud)

该内容downdloadedtext.txt不完整,与该网站的源代码不同.例如,它不包含SUMMARY部分.有正确的方法来正确获取完整内容吗?

我问这个的原因是因为我想从HTML中的不同值自动下载.

html javascript linux cgi wget

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

使用CGI和Bottle.py路由URL的问题

在CGI环境中使用bottle.py时,我一直很难获得除简单索引之外的任何东西.当我尝试返回/你好时,我收到了404响应.但是,如果我请求/index.py/hello

import bottle
from bottle import route

@route('/')
def index():
    return 'Index'

@route('/hello')
def hello():
    return 'Hello'

if __name__ == '__main__':
    from wsgiref.handlers import CGIHandler
    CGIHandler().run(bottle.default_app())
Run Code Online (Sandbox Code Playgroud)

这是我的.htaccess文件

DirectoryIndex index.py
<ifmodule mod_rewrite.c="">
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.py/$1  [L]
</ifmodule>
Run Code Online (Sandbox Code Playgroud)

我从这里复制了大部分代码,因为我正在使用DH,它似乎相关:http://blog.coderonfire.com/2010/02/running-bottle-python-micro-framework.html

谢谢你的帮助.

python .htaccess cgi bottle

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

如何使用Python/CGI进行文件上传

我正在尝试创建一个文件上传页面,它会提示用户输入文件,并在显示进度时上传.

目前我已经设法创建一个可以调用我的python脚本的简单HTML页面.然后python脚本将获取文件并以1000字节的块上传.

我有两个主要问题(主要是由于对此全新):

1)我无法获得文件大小来计算百分比2)我不知道如何在服务器端python和页面中的任何内容之间进行通信以更新进度状态;大概是javascript.

我是否会采取错误的方式?或者我的困境有解决方案吗?

这是我的python代码:

#!/usr/local/bin/python2.5 
import cgi, os
import cgitb; cgitb.enable()

try:
    import msvcrt
    msvcrt.setmode (0, os.O_BINARY) 
    msvcrt.setmode (1, os.O_BINARY) 

except ImportError:
    pass

form = cgi.FieldStorage()
upload = form['file']

if upload.filename:
    name = os.path.basename(upload.filename)
    out = open('/home/oetzi/webapps/py/' + name, 'wb', 1000)
    message = "The file '" + name + "' was uploaded successfully"

    while True:
        packet = upload.file.read(1000)
        if not packet:
            break
        out.write(packet)
    out.close()
else:

message = "Derp... could you try that again please?"

print """\
Content-Type: text/html\n …
Run Code Online (Sandbox Code Playgroud)

html javascript python cgi

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

VMS上Python中的简单CGI Web服务器

我试图在python上运行VMS上运行一个非常简单的CGI服务器.

import sys    
from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler    
server_address=('',8080)
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它正确地提供静态内容并且它试图执行CGI-s(它在正确的位置,我已经将这些CGI与Apache一起使用,因此该部分绝对不是问题)但它挂在某处.这是我对VMS不了解的事情.

任何指向正确方向的指针都将受到赞赏.:)

更新:简化,我需要在VMS上执行程序并以某种方式获取该程序的结果.任何对执行子进程和获取结果的引用对我来说都足够了.

python cgi vms

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

当浏览器重新加载/返回时,如何防止数据库再次被写入?

我正在整理一个写入数据库的小型Web应用程序(Perl CGI和MySQL).CGI脚本从表单中获取一些信息并将其写入数据库.但是,我注意到,如果我在网络浏览器上点击"重新加载"或"返回",它会再次将数据写入数据库.我不想要这个.

在这种情况下,防止重写数据的最佳方法是什么?

database perl cgi idempotent

5
推荐指数
2
解决办法
2067
查看次数

如何从Perl CGI脚本中不断通知用户进度?

我有这个Perl脚本位于我的Apache服务器的cgi-bin文件夹中:

#!/usr/bin/perl 
use strict;
use warnings;

$| = 1;

print "Content-type: text/html\r\n\r\n";
print "Hello there!<br />\nJust testing .<br />\n";

my $top = 5;
foreach (1..$top) {
    print "i = $_<br />\n";
    sleep 1;
}
Run Code Online (Sandbox Code Playgroud)

我想在这里实现的是逐步更新网页以向用户显示更新状态.然而,我实际上得到的是在延迟5秒之后的整个输出.

有什么办法可以编写一个能够不断告知用户进度的脚本吗?我有一个脚本需要很长时间才能完成,我希望能够实时看到它的进度而不是完整的脚本.

我也尝试将autoflush模式设置为off($ | = 0),但即便如此也没有做任何事情.

apache perl cgi

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

为什么Perl常用于编写CGI脚本?

我计划在我的网站上添加一个更好的搜索功能,所以我认为我会用C语言编写它并使用CGI作为访问它的方法.但就基于CGI的东西而言,Perl似乎是最受欢迎的语言.这是为什么?用C或机器代码编程是不是更快?

如果有的话,用脚本语言编写它有什么好处?

谢谢.

perl performance search cgi

5
推荐指数
3
解决办法
1943
查看次数

die() 不会停止代码执行

问题如下:

echo 'Hello...';

die('I died...');

echo 'HAHAHA!!!';
Run Code Online (Sandbox Code Playgroud)

在网络浏览器上,它在 die() 之后执行 echo。CLI 在 die() 上停止,并且没有按预期显示回显。

我的规格: PHP 7.4 (FPM) Web 服务器 Nginx (也尝试使用 apache 得到相同的结果)

另外,我在 Windows 上有一个很长一段时间的测试服务器,当调用 exit 或 die 时它正在退出脚本,但不知何故在 debian 测试服务器上没有这样做。

我有什么遗漏的吗?你们有什么建议吗?

提前致谢....

2022年7月27日更新:

脚本: 在此输入图像描述

浏览器输出: 在此输入图像描述

CLI 输出 在此输入图像描述

我已经更新了 PHP 版本(同样的情况): 在此输入图像描述

@MarkusZeller yes 禁用了 opcache: 在此输入图像描述

仍然无法正常工作...但在 php7.4.26 下的 Windows 服务器上以某种方式运行脚本并达到预期的模具

开发环境是带有 Debian 11 (WSL2) 的 Windows 我昨天也在我家里安装了基础 Debian 11 的测试机器上尝试过,它也有同样的问题。Debian 11 测试服务器的情况也是如此。

@YourCommonSense 脚本是相同的。这是 nginx 路径配置: 在此输入图像描述

php cgi exit die fpm

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