用C/C++写CGI程序
用C/C++写CGI程序
使用CGIC库的简要:
库的函数说明: http://www.boutell.com/cgic/#cgiFormStringNoNewlines
1. 打印CGI标准输出头部:
cgiHeaderContentType("text/plain");
或者:
fprintf( stdout, "Content-type:text/plain\n\n");红色部分不能写出“Contenttype”,否则浏览器显示网页会不正常。
2. 处理Request Method:
//deal with "GET"/"POST" method
if (strncmp(cgiRequestMethod, "post",4) == 0)
{
handlePostRequest();
}
else //"GET"
{
handleGetRequest();
}
3. 获取QueryString中的各个字段值:
cgiFormStringNoNewlines("query1", cmdstr, sizeof(cmdstr));
if (strcmp(cmdStr, "ip_address") == 0)
{
...
}
else
...
4. CGI输出:fprintf(cgiOut, "%s\n", cgi_Output);
以下是一些细节:
一、 C/C++编写CGI程序之form处理
1. GET
2. POST
3. 结束
我们有一张web
test.html
<html>
<head>
<title>form test</title>
</head>
<body>
<form method="get" name="test-get" action="./cgi-bin/test-get.cgi">
<input name="name"><input name="pswd"><input type=submit value="get">
</form>
<br><br>
<form method="post" name="test-post" action="./cgi-bin/t
相关文档:
C/C++是不检查数组下标是否越界的。
不检查下标是否越界可以有效提高程序运行的效率,因为如果你检查,那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降,所以为了程序的运行效率,C/C++才不检查下标是否越界。
  ......
先用贝尔的一道笔试题简要的说明一下吧:
【题】说明以下程序。
#include
int main(void)
{
unsigned int a[3] = {0x01020304, 0x05060708, 0x090a0b0c};
unsigned int *p = (unsigned int *)((int)a +1);①
printf("%x\n", *p);
return 0;
}
【题目解析】
这段程序的输出结果应 ......
预处理器(Preprocessor)
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2). 懂得预处理器将为你计算常数表达式的值,因此,直接 ......
typedef struct _RTP_header {
/* byte 0 */
#if (BYTE_ORDER == LITTLE_ENDIAN)
unsigned char csrc_len:4; /* expect 0 */
&nb ......
首先安装必需的开发
包
sudo apt-get install gcc g++ libgcc1 libg++ make gdb
安装MYSQL的C语言开发包
sudo apt-get install libmysql++-dev libmysql++2c2a libmysqlclient15-dev libmysqlclient15off
把lib文件拷贝到公用
sudo cp /usr/lib/mysql/* /usr/lib/
建立一个新文件test.cpp
vim test.cpp
输入内容
......