Chinaunix首页 | 论坛 | 博客
  • 博客访问: 213352
  • 博文数量: 33
  • 博客积分: 1690
  • 博客等级: 上尉
  • 技术积分: 381
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-27 18:57
个人简介

吟游天地间,隐没市井中..

文章分类
文章存档

2014年(1)

2009年(6)

2008年(26)

我的朋友

分类: C/C++

2008-10-24 12:59:11

   自己写的一个小例子,其中关于如何验证用户名密码的问题还是有些许模糊,我是通过sqlite3_get_table来获取指针变量azResult(存贮的是搜索的结果),搜索回来的结果azResult[0]的内容我现在还没搞清楚到底是什么。不过可以了解到如果有匹配的话,azResult[1]就肯定不为空。而如果没有匹配的话,那么azResult[1]就为空。我是通过这个来进行判断用户名密码是否正确的,我的webserver是Appweb,使用的是cgi。本来我是准备把对数据库进行操作的一些API封装到Appweb中的,不过现在看来没时间做这个工作了,哎。。事情太杂太乱。过段时间再说吧,这里贴出这个小程序,老手看了不要笑话。还有一个我比较奇怪的问题是我通过getenv("QUERY-STRING")可是得到的总是空值,最后没办法只得通过stdin来获取from表单提交的数据的。如果有哪位大侠了解的就指点指点小弟啦。好了,废话说了一大片,丑媳妇最终还是要见公婆的,就把这个程序贴出来让大家帮我看看:

#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"
#include <string.h>

void main()
{
  sqlite3 *db=NULL;
  char *Msg = 0 ;
  int rc;
   
  int i, n;
  char c[100];
  char a[2][100]={0};
  char b[2][100]={0};
  char d[2][100]={0};
  char *t,*p,*g;

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

  if( getenv("CONTENT_LENGTH") )
   {
    n = atoi( getenv("CONTENT_LENGTH") );
     }
     else
     {
       n = 0;
       fprintf( stdout, "(NULL)" );
     }

     for( i=0; i<n; i++)
     {
      c[i] = getc(stdin);
     }
     i = 0;
     p = strtok(c,"&");
     while(p!=NULL&&i<2)
     {
        strcpy(a[i++],p);
        p = strtok(NULL,"&");
     }
     i=0;
     t = strtok(a[0],"=");
     while(t!=NULL&&i<2)
     {
        strcpy(b[i++],t);
        t = strtok(NULL,"&");
     }
     i = 0;
     g = strtok(a[1],"=");
     while(g!=NULL&&i<2)
     {
        strcpy(d[i++],g);
        g = strtok(NULL,"&");
     }
  int nrow = 0, ncolumn = 0;
  char ** azResult;
  char sql[100];

  rc = sqlite3_open("z.db",&db);
  if(rc)
  {
   sqlite3_close(db);
   exit(1);
  }
  else
  sprintf(sql,"Select * From My where name='%s' and password='%s'",b[1],d[1]);
  sqlite3_get_table(db, sql, &azResult, &nrow, &ncolumn, &Msg);
  if(azResult[1]==NULL)
  {
    printf("

Login faile!

");
  }
  else
  {
    printf("

Login success!

"
);
  }
  sqlite3_free_table(azResult);
  sqlite3_close(db);
  printf(" \n");
  printf("\n");
  exit(0);
}

阅读(2739) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

刘子一2010-08-03 18:16:39

学习了...

刘子一2010-08-03 18:16:39

学习了...