C语言CGI编程入门(一)

C语言CGI编程入门(一)

http://www.leavesongs.com/WEB/CGIforC_1.html

    CGI是指web服务器调用编程语言编写的程序的一个接口。比如我们可以编写一个用户注册的页面,用户将其输入的邮箱、用户名、密码输入并点击注册,此时浏览器就将用户输入的内容发送给了我们后台的CGI程序,我们的CGI程序接受到这些信息,可以对其进行处理。比如送入数据库、判断输入的信息是否合法等。

    主流的CGI程序用Perl编写,Perl是一款强大的脚本语言,不过我这里不太懂,我也不去比较某两个语言间的优劣。我说一下用C和C++如何编写CGI程序,告诉大家用C语言也能编写web应用程序,用C语言也能写一个网站。

    1.准备工作

    首先要先安装一款web服务器。我就用windows系统下的Apache,当然Linux下大同小异,可能需要设置的东西多一些。

    大家可以在apache官网下载最新版的Apache for Windows,天空也有下载:http://www.skycn.com/soft/1218.html。安装后打开安装目录,大致就是这样一些文件:

     点击查看原图

    看到那个“cgi-bin”了吗,这是默认的cgi程序目录。当然,我们也可以手动设置其位置:用记事本打开conf/httpd.conf,这是Apache的配置文件。找到类似下面这一行

ScriptAlias /cgi-bin/ "d:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/"

    "/cgi-bin/"表示web地址,比如默认是http://localhost/cgi-bin/,即访问cgi的根目录。"d:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/"表示对应的绝对路径。这应该不难理解,我们浏览器访问http://localhost/cgi-bin/就是代表访问了服务器上的相应的绝对路径。所以修改这个绝对路径,就可以指定我们的CGI程序存放的根目录。

    我这里就不改了,一会我们写好的CGI程序直接放在这个cgi-bin文件夹下,再通过http://localhost/cgi-bin/访问即可。

    2.开始写程序

    用VS2010新建一个控制台应用程序工程,我的就叫cgi_test。在main函数里写

1 printf("Content-type:text/html\n\n");
2 printf("hello world!!");

    当然也可以用C++的cout来代替printf输出。先别急着编译,我们先在工程上点右键,选择属性:

     点击查看原图

    在配置设置-常规中,更改输出目录为cgi-bin下。我就改成cgi-bin\test\,这样我们生成的可执行文件就会被放在这里。目标文件的扩展名我也顺便从exe改成cgi,如果不改,迅雷等下载可能会让你下载而不是让浏览器解析它。

     点击查看原图

    再就可以编译了。F7编译后,我们来到cgi-bin/test/中,就可以看到我们编译生成好的"cgi_test.cgi"文件。

    打开浏览器,输入http://localhost/cgi-bin/test/cgi_test.cgi,就可以看到hello world了:

     点击查看原图

    这就是我们的第一个cgi程序。

    3.怎么写一个CGI程序

    刚才写程序的工作是我来完成的,虽说那两个语句很简单,但有的同学会问为什么要这么写。

    我简单解释一下,第一个printf输出的"Content-type:text/html\n\n"是一个文件的标志,告诉浏览器以html的语法来解析此文件,而不是去下载它(注意末尾需要两个换行,即一个空行,这是标准)。只要我们需要输出内容到浏览器,都得加这一句话在最前面,记住就好。

    后面的printf就是输出到浏览器上的信息,注意需要用html的语法才能正常显示在浏览器上。比如换行,需要用<br />,而不是\n了。不懂的去学习关于html的知识(如果不学习html就别想做一个网站或web程序)。

    所以,只要通过printf,就可以将任何html代码输出在浏览器里。而且,因为是用C/C++写的程序,所以C/C++下的一切函数,都可以用在CGI程序里。(也包括windowsAPI)

    比如,用户填写好了注册表单,将信息传递给我的CGI程序,我就可以调用ODBC的函数,连接数据库,将信息写入数据库。也可以通过if判断句,来检查用户是否输入了非法信息。

    不过有同学又要问了,用户填写的信息怎么就传给我们的CGI程序了呢?程序又是怎么接受这些数据?

    4.接受GET或POST来的信息

    如果不知道GET和POST的意思,我建议你还是去看一下PHP。我这里只简单地提一下,我们新建一个html网页,在其中添加一个表单,其中有一个文本框和一个按钮,大致代码如下:

1 <form id="form" name="form" method="post" action=" http://localhost/cgi-bin/test/cgi_test.cgi">
2   <p>输入内容:
3     <input type="text" name="user" id="user" />
4   </p>
5   <p>
6     <input type="submit" name="submit" id="submit" value="提交" />
7   </p>
8  
9 </form>

    大家可以看到,form有个属性method,表示你用什么方式提交(post或get),action属性表示提交的地址。get方式提交,意思就是把提交的内容放在地址后面,用?隔开。post提交就是把数据放在数据包里发送给目标地址。我们在文本框内填入信息,点击按钮提交,我们填入的信息就会以相应方式发送到目标地址。

    C程序接受POST过来的信息比较简单。因为post来的信息都在输入流里,直接scanf或cin>>就能读取了。

    GET来的信息在地址栏里,我们需要用到一个C库中的函数:getenv,它的作用是获取环境变量,其中包括获取GET来的信息。(获取?后的所有内容:getenv("QUERY_STRING"))

    关于这个函数的所有用法我放在附件里,下载可查。

    5.做个示范

01 int _tmain(int argc, _TCHAR* argv[])
02 {
03     printf("Content-type:text/html\n\n");
04     printf("%s",getenv("QUERY_STRING")); //打印get获取的信息
05     char szPost[256];
06     gets(szPost);
07     if(strcmp(szPost,))
08             printf("%s",szPost); //打印post获取的信息
09     return 0;
10 }

    用我们刚才的html代码来提交:

    填入内容: 点击查看原图

    post方式获取的信息,注意地址栏: 点击查看原图

    get方式获取的信息,注意地址栏: 点击查看原图

    至于get方式获取的信息打印出来后面为什么有乱码,因为我顺便把没有信息的szPost也打印了。实际应用的时候应该先判断szPost中是否有信息再打印。

gnefniu
关注 关注
  • 18
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言CGI程序详细教程
04-21
C语言编写的CGI程序具 有执行速度快、安全性高等特点。 内容介绍的比较详细
unix平台下c语言高级编程指南
09-26
本书范例丰富,且具有代表性,如Socket编程、客户/服务端编程、多线程开发、CGI编程、X Windows下的Motif编程等。读者直接或只需稍作修改就可以将它们应用到自己的应用程序开发中。这些范例的源代码可以从配套光盘的...
c语言cgi实例
热门推荐
专注的力量
03-25 1万+
<br />CGI是Common Gateway Interface的缩写,翻译成中文就是通用网关接口,它是网页的后台处理程序,运行在服务器端上,可以用多种语言书写,最常用的就是Perl(因为Perl有强大的字符串处理功能,而CGI程序经常要处理许多的字符串)。举个例子来说,通常一般的论坛或邮箱等都需要注册,需要用户输入用户名和密码,首先给你一个静态的页面,上面有两个文本框,要求你输入用户名和密码,还有一个提交和重置的按钮,用于提交用户的输入,当用户点击提交按钮时,这个请求就被发送到服务器端,服务器上的CG
C语言基础总结
最新发布
weixin_50216991的博客
09-15 2994
我学习的第一门编程语言是Java,所以之前一直没有系统学习过C语言。这篇文章主要就是我学习过程的一个总结,方便以后复习查看。
Linux CGI编程
王均震的专栏
03-21 485
 Linux CGI编程  pxcwan.cublog.cn http://linux.chinaitlab.com/kernel/526433.html   http://www.trainlinux.com/p/2002-01-11/4279.htmlhttp://blog.csdn.net/csumck/archive/2005/11/23/535531.aspx
C语言cgi编程入门
lqxandroid2012的专栏
04-06 5359
本文译自Getting Started with CGI Programming in C。因为本人水平有限,难免有误,欢迎指正。 这是一篇介绍如何使用C语言进行CGI编程的文章。假设读者了解C基础知识,并且可以写出简单的HTML表单和在Web服务器上安装CGI脚本。通过简单的范例对原理进行解释说明。 两点重要提醒: 为了避免浪费时间,请检查——通过恰当的本地文档或者联系Web服务器管理
C语言CGI程序【转】
许落
01-18 1万+
一、CGI概述 CGI(公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互, 也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理, 将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工 作。CGI程序可以用任
使用CGIC库进行C语言CGI编程的简明教程
"CGIC简明教程 - 入门C语言CGI编程的向导" CGIC,全称Common Gateway Interface in C,是一个简洁且强大的C语言CGI(Common Gateway Interface)库,它使得开发者能够更方便地编写Web应用程序。本教程针对初学者,...
C语言网络编程入门:使用telnet测试TCP连接
此外,文中还提到了WEB编程基础,小型web服务器weblet作为示例,它可能是一个简单的HTTP服务器,用于响应来自客户端(如telnet)的HTTP请求,提供静态网页内容或执行CGI脚本。 C语言的网络编程涉及众多概念和技术,...
C语言实现的CGI编程:表单处理入门
C语言中,CGI编程的基本步骤包括获取和解析环境变量。例如,对于使用GET方法的表单,表单数据会被保存在服务器的QUERY_STRING环境变量中。C程序员可以使用stdlib库中的getenv函数来获取这个环境变量,然后对数据...
C语言CGI编程
12-25
C语言CGI编程,详细介绍了如何用C语言进行CGI编程,适合入门者学习,很好的学习资料。
C语言编写CGI程序
07-30
教你如何用C语言编写CGI程序,并有例子分析。
C语言开发CGI程序详解:从入门到实践
"这篇教程是关于CGI编程的学习,主要针对使用C语言在Linux环境下进行嵌入式开发的读者。教程介绍了CGI的基本概念、接口标准以及如何处理Form输入和生成HTML输出。" CGI(Common Gateway Interface)是Web服务器与...
CGIC语言
richie8848的专栏
01-23 967
为什么要进行CGI编程?    在HTML中,当客户填写了表单,并按下了发送(submit)按钮后,表单的内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的内容进行一些处理,或者是把它们保存起来,或者是按内容进行一些查询,或者是一些别的什么。没有了CGI,WEB的世界就完全失去了它的交互性,所有的信息都变成单向的了,而不能够有任何的反馈。    有的人认为可以用JavaScri
c语言编写cgi,C语言CGI
weixin_32101377的博客
05-25 239
// C语言开发网站1.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include //需要引入要用到的头文件#include #include #include //最大缓冲区长度#define MAXBUFFLEN 255//登录超时#define LOGIN_...
C语言CGI
经验之外
04-16 3976
嵌入式的web程序,需要用cgi来处理后台,另考虑到可移植性,C为首选语言(虽然Perl语言是编写cgi程序的主流选择)因为手头暂时还没嵌入式设备,为了开发的方便,一般都是在windows平台下做开发,然后移植到嵌入式平台上,这里就把我在windows下搭建运行成功第一个cgi的例子记录如下: 【开发环境及使用工具】 操作系统: windows 7 C语言开发工具: Dev-C++ web
c语言编制编程语言,C语言CGI编程入门(一)
weixin_33045961的博客
05-18 428
CGI是指web服务器调用编程语言编写的流程的一个接口。比如我们可以编写一个用户注册的界面,用户将其输入的邮件、用户名、密钥输入并点击注册,此时浏览器就将用户输入的内容发送给了我们后台的CGI程序,我们的CGI程序接受到其他资料,可以对其进行处理。比如送入、分析输入的资料是否非法等。主流的CGI程序用Perl编写,Perl是一款超强的插件语言,但是我这儿不太懂,我也不去比较某两个语言间的好坏。我说...
C语言进行CGI程序设计
TODDOR_C的专栏
02-22 1161
C语言进行CGI程序设计 一、CGI概述    CGI(公用网关接口)规定了Web服务器调用其他可执行程序(CGI程 序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传
c语言实现cgi
黑客三遍猪
02-20 8126
参考 C语言CGI编程入门(一) 使用C语言CGI库“CGIC”完成Web开发的各种要求 C语言构建WEB管理系统(三):CGI程序解析GET数据
写文章

热门文章

  • C语言CGI编程入门(一) 26419
  • Frank-Wolfe方法 25813
  • 随机逼近算法简介 13855
  • 使用Soot生成控制流图 5712
  • fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾 5322

分类专栏

  • 点滴 13篇
  • Java 12篇
  • C&C++ 4篇
  • linux 3篇
  • WinCap
  • WinPcap 2篇

最新评论

  • Frank-Wolfe方法

    qq_43191960: 您好,请问截图出自哪本书?

  • 使用Soot生成控制流图

    FangYongXiang001: 能否交流动态流量分配,谢谢

  • 使用Soot生成控制流图

    就这样吧呵呵: 有没有相关的数据详细讨论控制流????求推荐

  • 内核的定时机制实验

    Henzox: 好文章

  • Windows 7下构建OpenJDK7

    gnefniu 回复 为了我为了你承诺: 没有报错?应该是等待的时间比较长吧,编译所花时间挺长,另外磁盘空间要足够。

大家在看

  • 中英双语酒店管理系统——pms系统,海外版
  • 论文 Python 实现WOA-CNN-BiGRU-Attention数据分类预测 64
  • 手环押金原路退回系统——足浴店——东方仙盟

最新文章

  • 使用Soot生成控制流图
  • pcap_next_ex() —— 基于非回调函数的捕获数据包
  • Libpcap库主要函数
2015年1篇
2014年3篇
2013年14篇
2012年14篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢仿铜雕塑工艺手法湖州玻璃钢陶瓷雕塑企业五华区玻璃钢雕塑设计公司哪家好陕西仿铜玻璃钢雕塑定做价格南通商场开业美陈玻璃钢花盆技术流程图片潮汕玻璃钢狼人护卫雕塑玻璃钢十八罗汉雕塑定做北京玻璃钢人物雕塑定制水泥花盆与玻璃钢花盆重量珠海玻璃钢卡通雕塑造型合肥设计玻璃钢雕塑报价商场婚庆美陈点龙井酒店玻璃钢花盆淮安玻璃钢人物雕塑商家美陈商场炫酷门头贵州户外玻璃钢雕塑多少钱上饶玻璃钢大白菜雕塑绍兴市玻璃钢雕塑嘉兴定制玻璃钢雕塑价位玻璃钢花盆组合批发玻璃钢雕塑印章深圳宏丰玻璃钢雕塑怎样介绍商场美陈词句宝鸡肖像校园玻璃钢景观雕塑深圳玻璃钢雕塑摆件怎么样安阳景观标识玻璃钢彩绘雕塑公司曲靖市玻璃钢雕塑价格表河北玻璃钢雕塑厂西宁玻璃钢雕塑卡通香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化