20190323学习小结

7 篇文章 0 订阅

今天在通讯录中加入了用户身份验证以及注册功能

 

客户端client代码:

界面程序usr_menu():

void usr_menu()
{
	system("clear");
	printf("\t\t----1.用户登录----\n");
	printf("\t\t----2.用户注册----\n");
	printf("\t\t----3.退出登录----\n");
	printf("请选择\n");
}

 

 

主程序:

usr_menu();
	char choice[32] = {0};
	scanf("%s",choice);
	switch(choice[0])
	{
		case '1':
			log_on(fd);
			break;
		case '2':
			add_usr(fd);
			log_on(fd);
			break;
		case '3':
			exit(1);
	}

用户注册以及身份验证代码:

//身份验证
void log_on(int fd)
{
	char usr[32];
	char pwd[32];
	int i = 1;
	Chat a;
	a.cmd = USRPROVE;
	int ret = send(fd,&a,sizeof(a),0);
	if(-1 == ret)
	{
		perror("send");
	}


	printf("输入用户名:\n");
	scanf("%s",usr);
	while(1)//循环接收信息
	{
		memset(&a,0,sizeof(a));
		ret = recv(fd,&a,sizeof(a),0);
		if(-1 == ret)
		{
			perror("recv");
		}
		
		if(strcmp(a.name,usr) != 0)
		{
			continue;
		}
		
		while(1)
		{
			printf("输入密码:\n");
			scanf("%s",pwd);
			if(strcmp(a.tel,pwd) == 0)
				break;
			else
			{
				if(i == 3)
				{
					exit(1);
				}
				printf("密码错误!还有%d次机会\n",3-i);
				i++;
			}
		}
		break;
	}
	printf("登入成功>_<\n");
	sleep(1);
}

//用户注册
void add_usr(int fd)
{
	Chat c;
	printf("输入用户名和密码:\n");
	scanf("%s%s",c.name,c.tel);
	c.cmd = ADDUSR;
	int ret = send(fd,&c,sizeof(c),0);
	if(-1 == ret)
	{
		perror("send");
	}
	printf("用户注册成功!\n");
	sleep(1);
}

服务器端server代码:

void log_on(int fd)
{
	sqlite3 *ppdb;
	int ret = sqlite3_open("address.db",&ppdb);
	if(ret != SQLITE_OK)
	{
		printf("sqlite3_open:%s\n",sqlite3_errmsg(ppdb));
		exit(1);
	}
	char sql[128] = {0};
	sprintf(sql,"select * from usr;");
	ret = sqlite3_exec(ppdb,sql,sendinfo,&fd,NULL);
	if(ret != SQLITE_OK)
	{
		printf("sqlite3_exec:%s\n",sqlite3_errmsg(ppdb));
		exit(1);
	}
	sqlite3_close(ppdb); 
}

void add_usr(Chat *c)
{
	sqlite3 *ppdb;
	int ret = sqlite3_open("address.db",&ppdb);
	if(ret != SQLITE_OK)
	{
		printf("sqlite3_open:%s\n",sqlite3_errmsg(ppdb));
		exit(1);
	}
	char sql[128] = {0};
	sprintf(sql,"insert into usr values ('%s','%s');",c->name,c->tel);
	ret = sqlite3_exec(ppdb,sql,NULL,NULL,NULL);
	if(ret != SQLITE_OK)
	{
		printf("sqlite3_exec:%s\n",sqlite3_errmsg(ppdb));
	}
	sqlite3_close(ppdb);
}

容错率问题还没解决>-<!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值