zoukankan      html  css  js  c++  java
  • 写一个CGI程序并运行

    准备Linux和Apache
    我在/var/www/cgi-bin/下建一个文件get.c
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        char *data;
        long m,n;
        printf("Content-type: text/html
    
    ");
        printf("<TITLE>Mult Result</TITLE>");
        printf("<H3>Mult Result</H3>");
    
        data = getenv("QUERY_STRING");
        if(data == NULL)
            printf("<P>Don't transfer data or transfer error");
        else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)
            printf("<P>Error, invalid format, data have to number");
        else
            printf("<P>%ld and %ld result: %ld", m, n, m * n);
            printf("<br><h>Thank you to use the zongshuai webserver</h1>");
    
        return 0;
    }

    然后编译

    gcc -o get.cgi get.c

    编译完后会生成一个get.cgi文件

    然后我配置Apache,我是这么配置的(我的Apache是2.4.23版本)

    LoadModule cgid_module modules/mod_cgid.so前面的#去掉

    添加addHandler cgi-script .cgi .pl

    然后配置虚拟空间

    <VirtualHost *:80>
            ServerName cgi.xxx.com
            ServerAdmin admin@xxx.com
            DocumentRoot /var/www/cgi-bin
            <Directory "/var/www/cgi-bin">
                     AllowOverride None
                     Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                     Require all granted
             </Directory>
            ErrorLog "logs/error.cgi.log"
            CustomLog "/var/www/cgi.log" combined
    </VirtualHost>

    然后重启Apache

    在浏览器中输入cig.xxx.com/get.cgi?m=3&n=7

    输出如下内容:

    Mult Result

    3 and 7 result: 21
    Thank you to use the zongshuai webserver


    以下转自网络
    Linux CGI编程基础
    
    
    1.为什么使用CGI?
    
    
        如前面所见,任何的HTML均是静态网页,它无法实现一些复杂的功能,而CGI可以为我们实现。如:a.列出服务器上某个目录中的文件,对目录中的文件进行操作;b.通过CGI实现串口通讯;c.实现数据库接口;d.实现从摄像头读取一张图片显示在网页上… 等等
    
    
    2. CGI是什么?
    
    
        CGI全称是 Common Gate Intergace ,在物理上,CGI是一段程序,它运行在Server上,提供同客户端 Html页面的接口。
    
    
    3. CGI编程语言
    
    
        你可以用任何一种你熟悉的高级语言, C,C++,C shell,Perl和VB都可以。
    
    
    4. CGI的安全性
    
    
        实际上CGI是比较安全的,至少比 那些没有数字签名的ActiveX控件要安全的多。除非你有意在程序里加入了破坏Server的命令, 否则一般不会有什么严重的后果。
    简单的说来,CGI是用来沟通HTML表单和服务器端程序的接口(interface)。说它是接口,也就是说CGI并不是一种语言,而是可以被其他语言所应用的一个规范集。理论上讲,你可以用任何的程序语言来编写CGI程序,只要在编程的时候符合CGI规范所定义的一些东西就可以了。由于C语言在平台无关性上表现不错(几乎在任何的系统平台下都有其相应编译器),而且对大多数程序员而言都算得上很熟悉(不像Perl),因此,C是CGI编程的首选语言之一。这儿我们介绍的,就是如何使用C来编写CGI程序。
    作为CGI编程的最为简单的例子,就是进行表单的处理。因而在这篇文章中,我们主要介绍的就是如何用C来编写CGI程序来进行表但处理。
    
    
    5.传送方法:
    
    
        所谓方法是指调用CGI程序的途径。事实上,要执行程序时,你用一种方法向服务器提出请求,此请求定义了程序如何接受数据。 下面介绍常用的两种方法:GET和POST 1.GET 当使用这种方法时,CGI程序从环境变量QUERY_STRING获取数据。
    QUERY_STRING 被称为环境变量,就是这种环境变量把客户端的数据传给服务器。为了解释和执行 程序,CGI必须要分析(处理)此字符串。
        POST 使用POST方法时,WEB服务器通过stdin(标准输入),向CGI程序传送数据。服务器 在数据的最后没有使用EOF字符标记,因此程序为了正确的读取stdin,必须使用CONTENT_LENGTH 。当你发送的数据将改变
    Web服务器端的数据或者你想给CGI程序传送的数据超过了1024 字节,这是url的极限长度,你应该使用POST方法。 实现方法:
        GET实现方法
        <form name=“guyi‘s form” action=“http://www.yourname.com/cgi/your.cgi” method=GET>
    
    
        POST实现方法:
        <form method=post>
    
    
    
    
  • 相关阅读:
    xml ui
    xml ui
    xml ui
    debug
    centOS7 mini配置linux服务器(一)安装centOs7
    数据结构之__链表
    数据结构之__队列
    数据结构之__栈
    在树莓派上使用 SSD1306 OLED 屏幕
    git官方手册
  • 原文地址:https://www.cnblogs.com/xiaozong/p/5817220.html
Copyright © 2011-2022 走看看