c语言实现cgi

参考

C语言CGI编程入门(一)
使用C语言的CGI库“CGIC”完成Web开发的各种要求
C语言构建WEB管理系统(三):CGI程序解析GET数据
C语言构建WEB管理系统(五):CGI实现上传文件
C语言CGI设置、读取Cookie
C语言写CGI 程序简要指南
cgic官网
"make (e=2): 系统找不到指定的文件"的原因
Windows 下Apache服务器搭建

helloworld简单例子

编写代码,

#include 

int main(int argc, char **argv)
{
  printf("Content-type:text/html\n\n");
  printf("hello\n");
  return 0;
}

编译Makefile,

all: helloworld.c
	gcc $^ -o helloworld.exe
install:
	cp helloworld.exe C:\Apache24\cgi-bin\helloworld.cgi
clean:
	rm *.exe

运行

将程序拷贝到Apache Http Server,以下在VSCode的终端中操作,注意后缀名变为*.cgi,

PS C:\dog\program\cgi\helloworld> cp .\helloworld.exe C:\Apache24\cgi-bin\helloworld.cgi

开一个CMD窗口运行Apache Http Server,

C:\Apache24\bin>httpd.exe

浏览器窗口输入,

http://localhost/cgi-bin/helloworld.cgi

处理GET/POST请求

C程序接受POST过来的信息比较简单。因为post来的信息都在输入流里,直接scanf或cin>>就能读取了。GET来的信息在地址栏里,通过C库中的函数getenv获取环境变量QUERY_STRING,来获取GET来的信息,函数位于中,也就是浏览器地址栏提交表单中?字符后的所有内容,建立test.html,放入C:\Apache24\htdocs目录,

<html>
	<head>
		<title>Testtitle>
	head>
	<body>
		<form action="cgi-bin/out.cgi" method="get">
			<input type="text" name="theText">
			<input type="submit" value="Continue">
		form>
	body>
html>

更改helloworld.c

#include 
#include 
#include 

int main(int argc, char **argv)
{
  char *szGet = NULL;
  char szPost[256] = {0};

  printf("Content-type:text/html\n\n");

  szGet = getenv("QUERY_STRING");
  if (szGet != NULL && strlen(szGet) > 0) {
    printf("%s\n", szGet);
    return 0;
  }
  printf("get--post\n");  

  gets(szPost);
  if(strcmp(szPost, "") != 0)
    printf("%s\n",szPost);

  return 0;
}

浏览器打开http://localhost/test.html,如下所示,点击continue,
c语言实现cgi_第1张图片
显示,
c语言实现cgi_第2张图片
更改test.html为post方式

,刷新浏览器,点击continue显示,
c语言实现cgi_第3张图片

你可能感兴趣的:(web全栈开发)