网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.将文件copy到剪贴板上.
.加注解的纸条问题简易解法.
.C程序开发经典实例之6.
.深度探索C++对象模型(7).
.用C++制作自己的游戏修改器(下).
.谈谈CGI的开发.
.图片模糊、锐化、雕刻.
.[收藏]ASP.Net生成静态HTML页 .
.深度探索C++对象模型(4).
.创建用于 ASP.NET 的分页程序控件.
.初学者,你应当如何学习C++以及编.
.C++习题与解析(类和对象-02).
.API之消息函数.
.C/C++中函数指针的含义.
.Building Shared Libraries.
.深入解析C++中的三个修饰符.
.C语言编程常见问题解答之ANSI/I.
.C++箴言:谨慎使用多继承.
.使用foreach来读取记录.
.Visual C++6.0 API函数操作技巧集.

自制c语言编制cgi实现搜索功能

发表日期:2008-3-8



  1. 环境
/usr/local/apache/htdocs/ (待检索的文件在该目录下)
/usr/local/apache/temp/ (作为中转的文件夹)
/usr/local/apache/cgi-bin/
2. 将gcc search.c产生的a.out放置在/usr/local/apache/cgi-bin/中,权限设置为nobody可
以执行。
3. chown -R nobody.nobody /usr/local/apache/temp
4. 在/etc/cron.daily中增加一个文件deletetemp 权限为555
rm -f /usr/local/apache/temp/*
5. 在/etc/cron.hourly中增加一个文件myupdate 权限为555
updatedb -U /usr/local/apache/htdocs
6. 删除/etc/cron.daily中的一个文件slocate.cron

附录(共2条):
1. index.htm的源码
<Html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<p>请输入你的查询字符串</p>
<form name="form1" action="http://129.158.217.223/cgi-bin/a.out">
<p> </p>
<p>
<input name="keyname" value="" type=text>
</p>
<p>
<input type="submit" value="查询">
</p>
</form>
<p>  </p>
</body>
</html>

2. search.c的源码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>

int main(int argc, char* argv[])
{
int fd;
int status;
time_t i;
char cFileName[64];
char cTempName[64];
char cBuffer[1024];
char *p = cBuffer;
char cContent[10240];

char *data;
char keyWord[1024];
data = getenv("QUERY_STRING");
if(data==NULL)
{
printf("Content-Type:text/html

");
printf("not found!");
exit(1);
}

sscanf(data, "keyname=%s&", keyword);

p += sprintf(p, "locate '%s' sed -e 's#^/usr/local/apache/htdocs#http://129.158.217.223#' sed -e 's#^.*$#<a href=&>&</a>#' > ", keyword);
i = time(NULL);

sprintf(cTempName, "%d.html", i);
sprintf(cFileName, "/usr/local/apache/temp/%d.html", i);
strcat(cBuffer, cFileName);
cBuffer[1024-1]=0;

system(cBuffer);
fd = open(cFileName, O_RDWR);
status = read(fd, cContent, sizeof(cContent)-1);
close(fd);

printf("Content-Type:text/html

");
printf("<meta http-equiv=refresh content=0;url="http://129.158.217.223/temp/%s">
", cTempName);
printf("Waiting.......................
");

printf("%s", keyword);
return 0;
}
上一篇:How to write a Makefile 人气:464
下一篇:JDOM使用详解及实例 人气:799
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐