`
xitongyunwei
  • 浏览: 921902 次
文章分类
社区版块
存档分类
最新评论

cgi之c语言 入门 .

 
阅读更多

http://blog.csdn.net/liang890319/article/details/6277777

分类: 嵌入式webserver 343人阅读 评论(0) 收藏 举报
CGI之C语言篇
来源: ChinaUnix博客  日期: 2008.06.18 15:57 (共有0条评论) 我要评论
为什么要进行CGI编程?
  
在HTML中,当客户填写了表单,并按下了发送(submit)按钮后,表单的内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的
内容进行一些处理,或者是把它们保存起来,或者是按内容进行一些查询,或者是一些别的什么。没有了CGI,WEB的世界就完全失去了它的交互性,所有的信
息都变成单向的了,而不能够有任何的反馈。
  
有的人认为可以用JavaScript来代替CGI程序,这其实是一个概念上的错误。JavaScript只能够在客户浏览器中运行,而CGI却是工作在
服务器上的。他们所做的工作有一些交集,比如表单数据验证一类的,但是JavaScript是绝对无法取代CGI的。但可以这样说,如果一项工作即能够用
JavaScript来做,又可以用CGI来做,那么绝对要使用JavaScript,在执行的速度上,JavaScript比CGI有着先天的优势。只
有那些在客户端解决不了的问题,比如和某个远程数据库交互,这时就应该使用CGI了。
  
简单的说来,CGI是用来沟通HTML表单和服务器端程序的接口(interface)。说它是接口,也就是说CGI并不是一种语言,而是可以被其他语言
所应用的一个规范集。理论上讲,你可以用任何的程序语言来编写CGI程序,只要在编程的时候符合CGI规范所定义的一些东西就可以了。由于C语言在平台无
关性上表现不错(几乎在任何的系统平台下都有其相应编译器),而且对大多数程序员而言都算得上很熟悉(不像Perl),因此,C是CGI编程的首选语言之
一。这儿我们介绍的,就是如何使用C来编写CGI程序。
   作为CGI编程的最为简单的例子,就是进行表单的处理。因而在这篇文章中,我们主要介绍的就是如何用C来编写CGI程序来进行表但处理。
   GET表单的处理
 
 
对于那些使用了属性“METHOD=GET”的表单(或者没有METHOD属性,这时候GET是其缺省值),CGI定义为:当表单被发送到服务器断后,表
单中的数据被保存在服务器上一个叫做QUERY_STRING的环境变量中。这种表单的处理相对简单,只要读取环境变量就可以了。这一点对不同的语言有不
同的做法。在C语言中,你可以用库函数getenv(定义在标准库函数stdlib中)来把环境变量的值作为一个字符串来存取。你可以在取得了字符串中的
数据后,运用一些小技巧进行类型的转换,这都是比较简单的了。在CGI程序中的标准输出(output)(比如在C中的stdout文件流)也是经过重定
义了的。它并没有在服务器上产生任何的输出内容,而是被重定向到客户浏览器。这样,如果编写一个C的CGI程序的时候,把一个HTML文档输出到它的
stdout上,这个HTML文档会被在客户端的浏览器中显示出来。这也是CGI程序的一个基本原理。
   我们来看看具体的程序实现,下面是一段HTML表单:

请在下面填入乘数和被乘数,按下确定后可以看到结果。




   我们要实现的功能很简单,就是把表单中输入的数值乘起来,然后输出结果。其实这个功能完全可以用JavaScript来实现,但为了让程序尽量的简单易懂,我还是选择了这个小小的乘法来作为示例。
   下面就是处理这个表单的CGI程序,对应于FORM标签中的ACTION属性值。
#include
#include
int main(void)
{
char *data;
long m,n;
printf("%s%c%c ","Content-Type:text/html;charset=gb2312",13,10);
printf("乘法结果 ");
printf("乘法结果 ");
data = getenv("QUERY_STRING");
if(data == NULL)
printf("错误!数据没有被输入或者数据传输有问题");
else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)
printf("错误!输入数据非法。表单中输入的必须是数字。");
else
printf("%ld和%ld的成绩是:%ld。",m,n,m*n);
return 0;
}
   具体的C语法就不多讲了,我们来看看它作为CGI程序所特殊的地方。
 
  前面已经提到标准输出的内容就是要被显示在浏览器中的内容。第一行的输出内容是必须的,也是一个CGI程序所特有的:printf("%s%c%c
","Content-Type:text/html",13,10),这个输出是作为HTML的文件头。因为CGI不仅可以像浏览器输出HTML文本,
而且可以输出图像,声音之类的东西。这一行告诉浏览器如何处理接受到的内容。在Content-Type的定义后面跟有两行的空行,这也是不可缺少的。因
为所有CGI程序的头部输出都是相近的,因而可以为其定义一个函数,来节省编程的时间。这是CGI编程常用的一个技巧。
   程序在后面调用了用了库函数getevn来得到QUERY_STRING的内容,然后使用sscanf函数把每个参数值取出来,要注意的是sscanf函数的用法。其他的就没有什么了,和一般的C程序没有区别。
   把程序编译后,改名为mult.cgi放在/cgi-bin/目录下面,就可以被表单调用了。这样,一个处理GET方式表单的CGI程序就大功告成了。
   POST表单处理
 
 
下面我们来考虑另外一种表单传送方法:POST。假设我们要实现的任务是这样的:把表单中客户输入的一段文本内容添加到服务器上的一个文本文件的后面。这
可以看作是一个留言版程序的雏形。显然,这个工作是无法用JavaScript这种客户端脚本来实现,也算得上真正意义上的CGI程序了。
 
 
看起来这个问题和上面讲的内容很相近,仅仅是用不同的表单和不同的脚本(程序)而已。但实际上,这中间是有一些区别的。在上面的例子中,GET的处理方法
可以看作是“纯查询(pure
query)”类型的,也就是说,它与状态无关。同样的数据可以被提交任意的次数,而不会引起任何的问题(除了服务器的一些小小的开销)。但是现在的任务
就不同了,至少它要改变一个文件的内容。因而,可以说它是与状态有关的。这也算是POST和GET的区别之一。而且,GET对于表单的长度是有限制的,而
POST则不然,这也是在这个任务中选用POST方法的主要原因。但相对的,对GET的处理速度就要比POST快一些。
  
在CGI的定义中,对于POST类型的表单,其内容被送到CGI程序的标准输入(在C语言中是stdin),而被传送的长度被放在环境变量
CONTENT_LENGTH中。因而我们要做的就是,在标准输入中读入CONTENT_LENGTH长度的字符串。从标准输出读入数据听起来似乎要比从
环境变量中读数据来的要容易一些,其实则不然,有一些细节地方要注意,这在下面的程序中可以看到。特别要注意的一点就是:CGI程序和一般的程序有所不
同,一般的程序在读完了一个文件流的内容之后,会得到一个EOF的标志。但在CGI程序的表单处理过程中,EOF是永远不会出现的,所以千万不要读多于
CONTENT_LENGTH长度的字符,否这会有什么后果,谁也不知道(CGI规范中没有定义,一般根据服务器不同而有不同得处理方法)。
   我们来看看到底如何从POST表单收集数据到CGI程序,下面給出了一個比较简单的C源代碼:
#include
#include
#define MAXLEN 80
#define EXTRA 5
/* 4个字节留给字段的名字"data", 1个字节留给"=" */
#define MAXINPUT MAXLEN+EXTRA+2
/* 1个字节留给换行符,还有一个留给后面的NULL */
#define DATAFILE "../data/data.txt"
/* 要被添加数据的文件 */
void unencode(char *src, char *last, char *dest)
{
for(; src != last; src++, dest++)
if(*src == "+")
*dest = " ";
else if(*src == "%") {
int code;
if(sscanf(src+1, "%2x", &code) != 1) code = "?";
*dest = code;
src +=2; }
else
*dest = *src;
*dest = " ";
*++dest = "";
}
int main(void)
{
char *lenstr;
char input[MAXINPUT], data[MAXINPUT];
long len;
printf("%s%c%c ",
"Content-Type:text/html;charset=gb2312",13,10);
printf("Response ");
lenstr = getenv("CONTENT_LENGTH");
if(lenstr == NULL || sscanf(lenstr,"%ld",&len)!=1 || len > MAXLEN)
printf("表单提交错误");
else {
FILE *f;
fgets(input, len+1, stdin);
unencode(input+EXTRA, input+len, data);
f = fopen(DATAFILE, "a");
if(f == NULL)
printf("对不起,意外错误,不能够保存你的数据 ");
else
fputs(data, f);
fclose(f);
printf("非常感谢,您的数据已经被保存%s",data);
}
return 0;
}
   从本质上来看,程序先从CONTENT_LENGTH环境变量中得到数据的字长,然后读取相应长度的字符串。因为数据内容在传输的过程中是经过了编码的,所以必须进行相应的解码。编码的规则很简单,主要的有这几条:
   1. 表单中每个每个字段用字段名后跟等号,再接上上这个字段的值来表示,每个字段之间的内容用&连结;
   2. 所有的空格符号用加号代替,所以在编码码段中出现空格是非法的;
   3. 特殊的字符比如标点符号,和一些有特定意义的字符如“+”,用百分号后跟其对应的ACSII码值来表示。
   例如:如果用户输入的是:
   Hello there!
   那么数据传送到服务器的时候经过编码,就变成了data=Hello+there%21 上面的unencode()函数就是用来把编码后的数据进行解码的。在解码完成后,数据被添加到data.txt文件的尾部,并在浏览其中回显出来。
   把文件编译完成后,把它改名为collect.cgi后放在CGI目录中就可以被表单调用了。下面给出了其相应的表单:

请输入您的留言(最多80个字符):


 
 
事实上,这个程序只能作为例子,是不能够正式的使用的。它漏掉了很关键的一个问题:当有多个用户同时像文件写入数据是,肯定会有错误发生。而对于一个这样
的程序而言,文件被同时写入的几率是很大的。因此,在比较正式的留言版程序中,都需要做一些更多的考虑,比如加入一个信号量,或者是借助于一个钥匙文件
等。因为那只是编程的技巧问题,在这儿就不多说了。
   最后,我们来写一个浏览data.txt文件的的CGI程序,这只需要把内容输出到stdout就可以了:
   #include
   #include
   #define DATAFILE "../data/data.txt"
   int main(void)
   {
   FILE *f = fopen(DATAFILE,"r");
   int ch;
   if(f == NULL) {
   printf("%s%c%c ",
   "Content-Type:text/html;charset=gb2312",13,10);
   printf("错误");
   printf("意外错误,无法打开文件"); }
   else {
   printf("%s%c%c ",
   "Content-Type:text/plain",13,10);
   while((ch=getc(f)) != EOF)
   putchar(ch);
   fclose(f); }
   return 0;
   }
 
  这个程序唯一要注意的是:它并没有把data.txt 包装成HTML格式后再输出,而是直接作为简单文本(plain
text)输出,这只要在输出的头部用text/plain类型代替text/html就可以了,浏览器会根据Content-Type的类型自动的选择
相应的处理方法。
   要触发这个程序也很简单,因为没有数据要输入,所以只需一个按钮就可以搞定了:
  
  
  
   到这儿,一些基本的用C编写CGI程序的原理就将完了。当然,就凭讲的这些内容,还很难编写出一个好的CGI程序,这需要进一步的学习CGI的规范定义,以及一些其他的CGI编程特有的技巧。
 
 
这篇文章的目的,也就是要你了解一下CGI编程的概念。事实上,现在的一些主流的服务器端脚本编程语言如ASP,PHP,JSP等,都基本上具备了CGI
编程的大部分的功能,但他们在使用上的,确实是比无论用什么语言进行CGI编程都要容易的多。所以在进行服务器端编程的时候,一般都会首先考虑使用这些脚
本编程语言。只有当他们也解决不了,比如要进行一些更为底层的编程的时候,才会用到CGI。

CGI之C语言篇
来源: ChinaUnix博客  日期: 2008.06.18 15:57 (共有0条评论) 我要评论
为什么要进行CGI编程?
  
在HTML中,当客户填写了表单,并按下了发送(submit)按钮后,表单的内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的
内容进行一些处理,或者是把它们保存起来,或者是按内容进行一些查询,或者是一些别的什么。没有了CGI,WEB的世界就完全失去了它的交互性,所有的信
息都变成单向的了,而不能够有任何的反馈。
  
有的人认为可以用JavaScript来代替CGI程序,这其实是一个概念上的错误。JavaScript只能够在客户浏览器中运行,而CGI却是工作在
服务器上的。他们所做的工作有一些交集,比如表单数据验证一类的,但是JavaScript是绝对无法取代CGI的。但可以这样说,如果一项工作即能够用
JavaScript来做,又可以用CGI来做,那么绝对要使用JavaScript,在执行的速度上,JavaScript比CGI有着先天的优势。只
有那些在客户端解决不了的问题,比如和某个远程数据库交互,这时就应该使用CGI了。
  
简单的说来,CGI是用来沟通HTML表单和服务器端程序的接口(interface)。说它是接口,也就是说CGI并不是一种语言,而是可以被其他语言
所应用的一个规范集。理论上讲,你可以用任何的程序语言来编写CGI程序,只要在编程的时候符合CGI规范所定义的一些东西就可以了。由于C语言在平台无
关性上表现不错(几乎在任何的系统平台下都有其相应编译器),而且对大多数程序员而言都算得上很熟悉(不像Perl),因此,C是CGI编程的首选语言之
一。这儿我们介绍的,就是如何使用C来编写CGI程序。
   作为CGI编程的最为简单的例子,就是进行表单的处理。因而在这篇文章中,我们主要介绍的就是如何用C来编写CGI程序来进行表但处理。
   GET表单的处理
 
 
对于那些使用了属性“METHOD=GET”的表单(或者没有METHOD属性,这时候GET是其缺省值),CGI定义为:当表单被发送到服务器断后,表
单中的数据被保存在服务器上一个叫做QUERY_STRING的环境变量中。这种表单的处理相对简单,只要读取环境变量就可以了。这一点对不同的语言有不
同的做法。在C语言中,你可以用库函数getenv(定义在标准库函数stdlib中)来把环境变量的值作为一个字符串来存取。你可以在取得了字符串中的
数据后,运用一些小技巧进行类型的转换,这都是比较简单的了。在CGI程序中的标准输出(output)(比如在C中的stdout文件流)也是经过重定
义了的。它并没有在服务器上产生任何的输出内容,而是被重定向到客户浏览器。这样,如果编写一个C的CGI程序的时候,把一个HTML文档输出到它的
stdout上,这个HTML文档会被在客户端的浏览器中显示出来。这也是CGI程序的一个基本原理。
   我们来看看具体的程序实现,下面是一段HTML表单:

请在下面填入乘数和被乘数,按下确定后可以看到结果。




   我们要实现的功能很简单,就是把表单中输入的数值乘起来,然后输出结果。其实这个功能完全可以用JavaScript来实现,但为了让程序尽量的简单易懂,我还是选择了这个小小的乘法来作为示例。
   下面就是处理这个表单的CGI程序,对应于FORM标签中的ACTION属性值。
#include
#include
int main(void)
{
char *data;
long m,n;
printf("%s%c%c ","Content-Type:text/html;charset=gb2312",13,10);
printf("乘法结果 ");
printf("乘法结果 ");
data = getenv("QUERY_STRING");
if(data == NULL)
printf("错误!数据没有被输入或者数据传输有问题");
else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)
printf("错误!输入数据非法。表单中输入的必须是数字。");
else
printf("%ld和%ld的成绩是:%ld。",m,n,m*n);
return 0;
}
   具体的C语法就不多讲了,我们来看看它作为CGI程序所特殊的地方。
 
  前面已经提到标准输出的内容就是要被显示在浏览器中的内容。第一行的输出内容是必须的,也是一个CGI程序所特有的:printf("%s%c%c
","Content-Type:text/html",13,10),这个输出是作为HTML的文件头。因为CGI不仅可以像浏览器输出HTML文本,
而且可以输出图像,声音之类的东西。这一行告诉浏览器如何处理接受到的内容。在Content-Type的定义后面跟有两行的空行,这也是不可缺少的。因
为所有CGI程序的头部输出都是相近的,因而可以为其定义一个函数,来节省编程的时间。这是CGI编程常用的一个技巧。
   程序在后面调用了用了库函数getevn来得到QUERY_STRING的内容,然后使用sscanf函数把每个参数值取出来,要注意的是sscanf函数的用法。其他的就没有什么了,和一般的C程序没有区别。
   把程序编译后,改名为mult.cgi放在/cgi-bin/目录下面,就可以被表单调用了。这样,一个处理GET方式表单的CGI程序就大功告成了。
   POST表单处理
 
 
下面我们来考虑另外一种表单传送方法:POST。假设我们要实现的任务是这样的:把表单中客户输入的一段文本内容添加到服务器上的一个文本文件的后面。这
可以看作是一个留言版程序的雏形。显然,这个工作是无法用JavaScript这种客户端脚本来实现,也算得上真正意义上的CGI程序了。
 
 
看起来这个问题和上面讲的内容很相近,仅仅是用不同的表单和不同的脚本(程序)而已。但实际上,这中间是有一些区别的。在上面的例子中,GET的处理方法
可以看作是“纯查询(pure
query)”类型的,也就是说,它与状态无关。同样的数据可以被提交任意的次数,而不会引起任何的问题(除了服务器的一些小小的开销)。但是现在的任务
就不同了,至少它要改变一个文件的内容。因而,可以说它是与状态有关的。这也算是POST和GET的区别之一。而且,GET对于表单的长度是有限制的,而
POST则不然,这也是在这个任务中选用POST方法的主要原因。但相对的,对GET的处理速度就要比POST快一些。
  
在CGI的定义中,对于POST类型的表单,其内容被送到CGI程序的标准输入(在C语言中是stdin),而被传送的长度被放在环境变量
CONTENT_LENGTH中。因而我们要做的就是,在标准输入中读入CONTENT_LENGTH长度的字符串。从标准输出读入数据听起来似乎要比从
环境变量中读数据来的要容易一些,其实则不然,有一些细节地方要注意,这在下面的程序中可以看到。特别要注意的一点就是:CGI程序和一般的程序有所不
同,一般的程序在读完了一个文件流的内容之后,会得到一个EOF的标志。但在CGI程序的表单处理过程中,EOF是永远不会出现的,所以千万不要读多于
CONTENT_LENGTH长度的字符,否这会有什么后果,谁也不知道(CGI规范中没有定义,一般根据服务器不同而有不同得处理方法)。
   我们来看看到底如何从POST表单收集数据到CGI程序,下面給出了一個比较简单的C源代碼:
#include
#include
#define MAXLEN 80
#define EXTRA 5
/* 4个字节留给字段的名字"data", 1个字节留给"=" */
#define MAXINPUT MAXLEN+EXTRA+2
/* 1个字节留给换行符,还有一个留给后面的NULL */
#define DATAFILE "../data/data.txt"
/* 要被添加数据的文件 */
void unencode(char *src, char *last, char *dest)
{
for(; src != last; src++, dest++)
if(*src == "+")
*dest = " ";
else if(*src == "%") {
int code;
if(sscanf(src+1, "%2x", &code) != 1) code = "?";
*dest = code;
src +=2; }
else
*dest = *src;
*dest = " ";
*++dest = "";
}
int main(void)
{
char *lenstr;
char input[MAXINPUT], data[MAXINPUT];
long len;
printf("%s%c%c ",
"Content-Type:text/html;charset=gb2312",13,10);
printf("Response ");
lenstr = getenv("CONTENT_LENGTH");
if(lenstr == NULL || sscanf(lenstr,"%ld",&len)!=1 || len > MAXLEN)
printf("表单提交错误");
else {
FILE *f;
fgets(input, len+1, stdin);
unencode(input+EXTRA, input+len, data);
f = fopen(DATAFILE, "a");
if(f == NULL)
printf("对不起,意外错误,不能够保存你的数据 ");
else
fputs(data, f);
fclose(f);
printf("非常感谢,您的数据已经被保存%s",data);
}
return 0;
}
   从本质上来看,程序先从CONTENT_LENGTH环境变量中得到数据的字长,然后读取相应长度的字符串。因为数据内容在传输的过程中是经过了编码的,所以必须进行相应的解码。编码的规则很简单,主要的有这几条:
   1. 表单中每个每个字段用字段名后跟等号,再接上上这个字段的值来表示,每个字段之间的内容用&连结;
   2. 所有的空格符号用加号代替,所以在编码码段中出现空格是非法的;
   3. 特殊的字符比如标点符号,和一些有特定意义的字符如“+”,用百分号后跟其对应的ACSII码值来表示。
   例如:如果用户输入的是:
   Hello there!
   那么数据传送到服务器的时候经过编码,就变成了data=Hello+there%21 上面的unencode()函数就是用来把编码后的数据进行解码的。在解码完成后,数据被添加到data.txt文件的尾部,并在浏览其中回显出来。
   把文件编译完成后,把它改名为collect.cgi后放在CGI目录中就可以被表单调用了。下面给出了其相应的表单:

请输入您的留言(最多80个字符):


 
 
事实上,这个程序只能作为例子,是不能够正式的使用的。它漏掉了很关键的一个问题:当有多个用户同时像文件写入数据是,肯定会有错误发生。而对于一个这样
的程序而言,文件被同时写入的几率是很大的。因此,在比较正式的留言版程序中,都需要做一些更多的考虑,比如加入一个信号量,或者是借助于一个钥匙文件
等。因为那只是编程的技巧问题,在这儿就不多说了。
   最后,我们来写一个浏览data.txt文件的的CGI程序,这只需要把内容输出到stdout就可以了:
   #include
   #include
   #define DATAFILE "../data/data.txt"
   int main(void)
   {
   FILE *f = fopen(DATAFILE,"r");
   int ch;
   if(f == NULL) {
   printf("%s%c%c ",
   "Content-Type:text/html;charset=gb2312",13,10);
   printf("错误");
   printf("意外错误,无法打开文件"); }
   else {
   printf("%s%c%c ",
   "Content-Type:text/plain",13,10);
   while((ch=getc(f)) != EOF)
   putchar(ch);
   fclose(f); }
   return 0;
   }
 
  这个程序唯一要注意的是:它并没有把data.txt 包装成HTML格式后再输出,而是直接作为简单文本(plain
text)输出,这只要在输出的头部用text/plain类型代替text/html就可以了,浏览器会根据Content-Type的类型自动的选择
相应的处理方法。
   要触发这个程序也很简单,因为没有数据要输入,所以只需一个按钮就可以搞定了:
  
  
  
   到这儿,一些基本的用C编写CGI程序的原理就将完了。当然,就凭讲的这些内容,还很难编写出一个好的CGI程序,这需要进一步的学习CGI的规范定义,以及一些其他的CGI编程特有的技巧。
 
 
这篇文章的目的,也就是要你了解一下CGI编程的概念。事实上,现在的一些主流的服务器端脚本编程语言如ASP,PHP,JSP等,都基本上具备了CGI
编程的大部分的功能,但他们在使用上的,确实是比无论用什么语言进行CGI编程都要容易的多。所以在进行服务器端编程的时候,一般都会首先考虑使用这些脚
本编程语言。只有当他们也解决不了,比如要进行一些更为底层的编程的时候,才会用到CGI。
分享到:
评论

相关推荐

    C语言CGI编程

    C语言的CGI编程,详细介绍了如何用C语言进行CGI编程,适合入门者学习,很好的学习资料。

    C语言开发CGI初步了解

    c语言开发cgi的入门级资料~~大于20字啊大于20字

    宋劲彬的嵌入式C语言一站式编程

    C语言入门 1. 程序的基本概念 1. 程序和编程语言 2. 自然语言和形式语言 3. 程序的调试 4. 第一个程序 2. 常量、变量和表达式 1. 继续Hello World 2. 常量 3. 变量 4. 赋值 5. 表达式 6. 字符类型与字符编码 3. ...

    unix平台下c语言高级编程指南

    本书是专为在UNIX平台下用C语言编制程序的人写的。是以POSIX为标准,主要以C语言为基础,详细介绍了UNIX平台下编写各种应用程序的范例和方法。全书分四个部分,共十五章。本书范例丰富,且具有代表性,如Socket编程...

    Linux C 一站式学习

    C语言入门 C语言本质 Linux系统编程 28. 文件与I/O 1. 汇编程序的Hello world 2. C标准I/O库函数与Unbuffered I/O函数 3. open/close 4. read/write 5. lseek 6. fcntl 7. ioctl 8. mmap 29. 文件系统 1. 引言 2. ...

    the c programming in linux

    Linux下C语言入门,英文原版, 包括用C语言写CGI程序,连接mysql数据库等内容

    代码合集.rar

    2012-06-11 12:54 6,598 C 编写的 CGI 后门.rar 2012-06-11 12:44 405,625 C++中国象棋游戏源代码.rar 2012-06-11 12:45 250,462 c++编程思想第二版卷一练习题答案.rar 2012-06-11 12:52 52,383,410 FPGA应用开发...

    php入门教程,很容易上手的。

    PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几...它可以比CGI或者Perl更快速的执行动态网页。PHP开发基础教程将带您走进PHP开发的大门,从最简单的变量开始逐步深入PHP Web开发的方方面面。本资源是一个入门教程。

    ChIDE集成开发环境和Ch命令窗口使用入门

    它支持ISO的C语言标准(C90/C99)和C++类库,附带了8000多个函数库并支持众多的工业标准,支持POSIX, socket/Winsock, X11/Motif, OpenGL, ODBC, C LAPACK, GTK+, Win32, XML, 和CGI等等。Ch具有MATLAB的高级数值计算...

    Python基础教程(第2版.修订版)

    此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识。最后,作者结合前面讲述的内容,按照实际项目开发的步骤向读者介绍了几个...

    Fastcgi学习总结(C/C++语言版)

    里面有一个详细C语言写的的范例程序。C++的版本也是大同小异,大家注意留心fastcgi++包里面的C++示例源代码。 好像很少有人用C/C++来开发fastcgi程序,为此,我把自己的一些经验做一个入门级的引导。我测试过我们的...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    如果想要强行转换变量类型,可以使用与C语言相同的函数settype()。 2.5 变量与常量 可能你已经注意到,变量都有一个美元符号($)的前缀。所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用...

    MySQL5 权威指南第3版中文版_part1

     第18章 C语言  18.1 MySQL C API(libmysqlclient)  18.2 Hello,World  18.3 与MySQL服务器建立连接  18.4 执行SQL命令  18.5 处理二进制数据和特殊字符  18.6 出错处理  第19章 Visual Basic 6/VBA  ...

    MySQL 5权威指南(第3版) 中文版 下载地址

     第18章 C语言  18.1 MySQL C API(libmysqlclient)  18.2 Hello,World  18.3 与MySQL服务器建立连接  18.4 执行SQL命令  18.5 处理二进制数据和特殊字符  18.6 出错处理  第19章 Visual Basic 6/...

Global site tag (gtag.js) - Google Analytics