1、 用DW画了一个登录界面
login.HTML源码如下:
<HTML xmlns="http://www.w3.org/1999/xhtml">
<head>
<Title>TL智能家居管理平台2009</Title>
</head>
<body>
<p>欢迎光临智能家居管理平台
<form ID="form1" name="form1" method="post" action="/cgi-bin/login.cgi">
<p>
<label for="user_name">用户名:</label>
<input name="user_name" type="text" ID="user_name" maxlength="50" />
<p>
<label for="passwd">密码:</label>
<input name="passwd" type="password" ID="passwd" maxlength="20" />
<p>
<label for="submit"></label>
<input type="submit" name="submit" ID="submit" value="提交" />
<label for="abord"></label>
<input type="reset" name="abord" ID="abord" value="重置" />
</form>
<p>
</body>
</HTML>
呵呵界面有点难看,不过先实现这个功能再说啦
2、编写相应的CGI程序:
login.c
/*登录查询*/
#include <stdio.h>
#include "sqlite3.h"
#include "cgic.h"
int
callback(voID *param,int column_num,char **rc,char **column_name); /*sqlite3的回调函数*/
int
hand_username(const char *database_filename);
/*处理用户名的函数*/
char username[51];
int
cgiMain()
{
cgiheaderContentType("text/HTML");
fprintf(cgIoUt,"<HTML><head>/n");
fprintf(cgIoUt,"<Title>my cgic test</Title>/n");
fprintf(cgIoUt,"</head>/n");
fprintf(cgIoUt,"<body>/n");
cgiFormStringNoNewlines("user_name",username,51);
/*获得用户输入域的数据*/
hand_username("/root/FamilyGate/homeg"); /*database path*/
fprintf(cgIoUt,"</body></HTML>/n");
return 0;
}
int
hand_username(const char *database_filename)
{
int query_rc; /*查询结果*/
sqlite3 *db = NulL; /*数据库连接指针*/
char *error_msg = 0; /*错误信息指针*/
char *sql_statement = "SELECT user_name FROM users"; /*sql语句*/
if(sqlite3_open(database_filename,&db))
{
/*打开数据库失败*/
fprintf(cgIoUt,"打开数据库失败!/n %s",sqlite3_errmsg(db));
sqlite3_close(db);
}else
{
query_rc = sqlite3_exec(db,sql_statement,callback,&error_msg);
if(query_rc==0)
fprintf(cgIoUt,"%s不是家庭成员!<br />",username);
if(query_rc && (query_rc!=4))
{
printf("code is:%d<br />",query_rc);
fprintf(cgIoUt,"sqlite Error:%s/n",error_msg);
sqlite3_close(db);
}
sqlite3_close(db);
}
}
int
callback(voID *param,char **column_name)
{
/*注意如果数据库有多条记录的话,每当查出一条记录就会调用一次回调函数*/
if(strcmp(rc[0],username)==0)
{
/*我只查询user_name这一列,所以这列的数据是放在rc[0]中的,直接拿来比较*/
fprintf(cgIoUt,"欢迎:%s<br />",username);
return 1; /*the call back must have a return value,or the sqlite3_exec() will return 4*/
/*若回调函数没有返回0值,则sqlite3_exec()将返回错误码:4,即回调函数中止*/
/*对于复杂的情况可以在回调函数中将记录结果保存到一个指针数组中,待查询完毕再做相关的处理*/
}
return 0;
}
3、在浏览器中输入服务器的IP和访问的网址:
192.168.44.128/HTML/login.HTML
随便填写一个用户名,然后提交,程序将判断是否是设定的用户。
后期的处理是,如果是合法用户则跳到管理页面,不是合法用户则打印出错提示。同时还要解决用户名的客户端认证,只允许用户输入英文和数字,以及密码的MD5加密,以后将同时检查用户名和密码是否合法,合法则进入管理页面。
总结以上是内存溢出为你收集整理的SQLite学习笔记5全部内容,希望文章能够帮你解决SQLite学习笔记5所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)