开发基于Apache服务器上的CGI程序

上一节中成功的搭建了Apache服务器,这节将介绍使用C语言开发能在Apache服务器上运行的CGI程序

安装好Apache服务器后,在C:\Program Files\Apache Software Foundation\Apache2.2下有一些用于开发Apache服务器的文件

文件介绍:

bin:Apache服务器软件所在地

cgi-bi:保存C语言写的程序

conf:保存服务器设置的信息

error:网站发送错误的处理

htdcocs:保存HTML程序

icons:保存开发Apache程序用的图标

include:保存开发web程序用到的一些头文件

lib:保存的是开发web程序用到的一些库

logs:日志

manual:Apache服务器语言的设置

modlules:保存一些动态链接库

程序实例1:开发一个CGI版的hello world程序

开发工具:VS2012  Apache服务器

开发步骤:

首先使用VS2012编译下面的代码

#include <stdio.h>

void main()
{
    //设置HTML语言
    printf("Content-type:text/html\n\n");

    //打印hello world, 我来自CGI
    //html中的换行符为<br>
    printf("hello world, 我来自CGI !<br>");
}

编译成功后在工程目录下的Debug文件夹中会有一个exe格式的可执行文件,我编译的程序中生成的是CGI编程.exe

将exe文件复制到C:\Program Files\Apache Software Foundation\Apache2.2\cgi-bin目录下,并且修改文件的格式,将CGI编程.exe改成hello.cgi

最后在IE浏览器中输入http://localhost/cgi-bin/hello.cgi

程序实例2:遍历Apache服务器中所有的环境变量

首先使用VS2012编译下面的代码

#include <stdio.h>
#include <stdlib.h>

void main()
{
    //设置HTML语言
    printf("Content-type:text/html\n\n");

    printf("Eviroments:<br>");

    //用于保存环境变量
    extern char** environ;

    //遍历CGI中的所有环境变量
    for(int i=0; ;i++)
    {
        if(NULL == environ[i])
        {
            break;
        }

        //打印CGI中所有的环境变量
        printf("%s<br>", environ[i]);
    }
}

将exe文件复制到C:\Program Files\Apache Software Foundation\Apache2.2\cgi-bin目录下,并且修改文件的格式,将CGI编程.exe改成eviroments.cgi

最后在IE浏览器中输入:http://localhost/cgi-bin/eviroments.cgi

程序实例3:使用环境变量获得服务器的类型

#include <stdio.h>
#include <stdlib.h>

void main()
{
    //设置HTML语言
    printf("Content-type:text/html\n\n");

    printf("%s ",getenv("SERVER_SOFTWARE"));
}

执行结果:

程序实例4:使用环境变量输出web信息

#include <stdio.h>
#include <stdlib.h>

void main()
{
    //设置HTML语言
    printf("Content-type:text/html\n\n");

    //递交表单的浏览器的名称、版本   和其他平台性的附加信息。
    printf("%s<br><br>",getenv("HTTP_USER_AGENT"));

    //CGI脚本运行时的主机名和IP地址
    printf("%s<br><br>",getenv("SERVER_NAME"));

    //你的服务器的类型如:
    printf("%s<br><br>",getenv("SERVER_SOFTWARE"));

    //指向这个CGI脚本的路径,
    printf("%s<br><br>",getenv("SCRIPT_NAME"));

    //递交脚本的主机名,这个值不能被设置.
    printf("%s<br><br>",getenv("REMOTE_HOST"));

    //递交脚本的主机IP地址.
    printf("%s<br><br>",getenv("REMOTE_ADDR"));

    //运行CGI的版本
    printf("%s<br><br>",getenv("GATEWAY_INTERFACE")); 

    //服务器运行的TCP口.
    printf("%s<br><br>",getenv("SERVER_PORT"));

    //服务器运行的HTTP协议.
    printf("%s<br><br>",getenv("SERVER_PROTOCOL"));
}

执行结果:

程序实例5:遍在网页中添加超链接

#include <stdio.h>
#include <stdlib.h>

void main()
{
    //设置HTML语言
    printf("Content-type:text/html\n\n");

    printf("<a href='http://www.baidu.com'>www.baidu.com</a>");
}

执行结果:

程序实例6:使用环境变量实现参数1个传递

#include <stdio.h>
#include <stdlib.h>

void main()
{
    //设置HTML语言
    printf("Content-type:text/html\n\n");

    char Name[256];

    //使用环境变量获得传递的参数
    char* queryString = getenv("QUERY_STRING");

    //把一个字符串解析到另一个字符串中
    //将获得的字符串中的%s打印到cName中
    sscanf(queryString, "name=%s", Name);

    //打印传递的参数
    printf("hello %s<br>", Name);
}

使用VS2012编译上面的代码,编译成功后,在工程目录下的Debug文件夹中会有一个exe文件,将exe文件修改成name.cgi,并且复制到C:\Program Files\Apache Software Foundation\Apache2.2\cgi-bin中

最后在浏览器中输入http://localhost/cgi-bin/name.cgi?name=Tom

执行结果

程序实例7:遍使用环境变量传递多个参数

#include <stdio.h>
#include <stdlib.h>

void main()
{
    //设置HTML语言
    printf("Content-type:text/html\n\n");

    int i1,i2;//定义2个变量用于接收传递的参数

    //使用环境变量获得传递的参数
    char* queryString = getenv("QUERY_STRING");

    //把一个字符串解析到另一个字符串中
    //将获得的字符串中的%s打印到cName中
    sscanf(queryString, "i1=%d&i2=%d", &i1, &i2);

    printf("%d+%d=%d", i1, i2, i1+i2);
}

使用VS2012编译上面的代码,编译成功后,在工程目录下的Debug文件夹中会有一个exe文件,将exe文件修改成sum.cgi,并且复制到C:\Program Files\Apache Software Foundation\Apache2.2\cgi-bin中

最后在浏览器中输入http://localhost/cgi-bin/sum.cgi?i1=12&i2=13

执行结果

程序实例8:遍在CGI中使用HTML

在记事本中输入下面的HTML语言,并且以HTML格式保存

<html>
<body>
    <form method=get action="http://localhost/cgi-bin/sum.cgi">
       i1:<input type="text" name="i1"/>
       i2:<input type="text", name="i2"/>
       <input type="submit"/>
     </form>
</body>
</html>

将保存好的HTML文件放在C:\Program Files\Apache Software Foundation\Apache2.2\htdocs目录下

在浏览器中输入http://localhost/sum.html

执行结果:

计算11+12的结果

在输入框中输入11和12

单击提交查询内容后显示了计算结果

时间: 2024-11-07 12:45:18

开发基于Apache服务器上的CGI程序的相关文章

开发Apache服务器上的CGI程序

最近学习Cocos2d-x,其中的Cocos2d-x使用CCHttpClient实现网络通信,在此做个总结: 工具:VS2013.Apache服务器 所用语言:C语言 程序实例一:(实现一个简单的HelloWorld) 1.首先使用VS2013编译下面代码(httpserver.c) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> voi

Apache服务器中运行CGI程序的方法,文中以Perl脚本作为示例

关于apache与CGI在这里就不解释了. 1.apache下面以2.0.63为例介绍运行CGI程序的配置.(http://www.nklsyy.com) 2.下载Windows下的Perl解释器ActivePerl,最新版本ActivePerl- 5.10.0.1003,假设安装路径为c:\Perl. 3.修改apache的配置文件httpd.conf: <Directory "D:/Apache Group/Apache2/cgi-bin"> AllowOverride

配置接口配置文件 明确指出错误信息(“/”服务器上出现应用程序错误)

开发环境:.net 其实这类问题(如下图)之前已经断断续续遇见过几次 但是每次都是不太上心或者已经知道错误出在哪里,但是类似于下图中这种莫名其妙的描述,排查起来较为困难 此时需要在配置文件中设置节点,将错误信息明确指出来,以便排错 “/”应用程序中的服务器错误. 运行时错误 说明: 服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因).但可以通过在本地服务器计算机上运行的浏览器查看. 详细信息: 若要使他人能够在远程计算机上查看此特定错误信息

Apache服务器上设置404错误页面

Apache服务器上设置404错误页面 基于ubuntu 16.04系统,使用 apache 进行设置 配置步骤 添加404页面 在所配置网站的根目录添加编辑好的 404.html 修改localized-error-pages.conf配置文件 localized-error-pages.conf位于 /etc/apache2/conf-enabled目录下 把#ErrorDocument 404 /404.html 去掉# 重启 apache 服务器 /etc/init.d/apache2

.net 禁止远程查看应用程序错误的详细信息,服务器上出现应用程序错误

打开页面时出现以下错误 ? "/"应用程序中的服务器错误. 运行时错误 说明:?服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因).但可以通过在本地服务器计算机上运行的浏览器查看.? 详细信息:?若要使他人能够在远程计算机上查看此特定错误消息的详细信息,请在位于当前 Web 应用程序根目录下的"web.config"配置文件中创建一个 <customErrors> 标记.然后应将此 <cust

在APACHE服务器上的访问方式上去除index.php

下面我说下 apache 下 ,如何 去掉URL 里面的 index.php 例如: 你原来的路径是: localhost/index.php/index 改变后的路径是: localhost/index 1.httpd.conf配置文件中加载了mod_rewrite.so模块 //在APACHE里面去配置 #LoadModule rewrite_module modules/mod_rewrite.so把前面的警号去掉 2.在APACHE里面去配置 ,将里面的AllowOverride Non

服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止

原文:服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止 误设置禁止远程查看应用程序错误的详细信息(出于安全原因). 之前自己也碰到過這種情況.特此整理,希望能夠幫助有困惑的挨踢人士~ 说明: 服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止查看应用程序错误的详细信息. 详细信息: 若要使他人能够从本地服务器计算机上查看此特定错误信息的详细信息,请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记.然后应将

Yii优化路由Apache配置(在APACHE服务器上的访问方式上去除index.php)

在APACHE服务器上的访问方式上去除index.php 下面我说下 apache 下 ,如何 去掉URL 里面的 index.php 例如: 你原来的路径是: localhost/index.php/index 改变后的路径是: localhost/index 1.httpd.conf配置文件中加载了mod_rewrite.so模块 //在APACHE里面去配置 #LoadModule rewrite_module modules/mod_rewrite.so把前面的警号去掉 2.httpd.

在Apache服务器上安装SSL证书

在Apache服务器上安装SSL证书 阿里云SSL证书服务支持下载证书安装到Apache服务器,从而使Apache服务器支持HTTPS安全访问.本文介绍了证书安装的具体操作. 前提条件 您的Apache服务器上已经开启了443端口(HTTPS服务的默认端口). 您的Apache服务器上已安装了mode_ssl.so模块(启用SSL功能). 本文档证书名称以domain name为示例,例如:证书文件名称为domain name_public.crt,证书链文件名称为domain name_cha