株洲网站建设服务,项目网络图怎么画,wordpress 段代码,网站建设的费用报价12 注册登录
整体概述
使用数据库连接池实现服务器访问数据库的功能#xff0c;使用POST请求完成注册和登录的校验工作。
本文内容
介绍同步实现注册登录功能#xff0c;具体涉及到流程图、载入数据库表、提取用户名和密码、注册登录流程与页面跳转的代码实现。 流程图使用POST请求完成注册和登录的校验工作。
本文内容
介绍同步实现注册登录功能具体涉及到流程图、载入数据库表、提取用户名和密码、注册登录流程与页面跳转的代码实现。 流程图描述服务器从报文中提取出用户名密码并完成注册和登录校验后实现页面跳转的逻辑。 载入数据库表结合代码将数据库中的数据载入服务器中。 提取用户名和密码结合代码对报文进行解析提取用户名和密码。 注册登录流程结合代码对描述服务器进行注册和登录校验流程。 页面跳转结合代码对页面跳转机制进行详解。
流程图
描述GET和POST请求下的页面跳转流程。
载入数据库表
将数据库中的用户名和密码载入到服务器的map中来map中的key为用户名value为密码。
//用户名和密码
mapstring,string users;void http_conn::initmysql_result(connection_pool *connPool)
{//先从连接池中取一个连接MYSQL *mysqlNULL;connectionRAII mysqlcon(mysql,connPool);//在user表中检索username,passwd数据浏览器端输入if(mysql_query(mysql,SELECT username,passwd FROM user)){LOG_ERROR(SELECT error:%s\n,mysql_error(mysql));}//从表中检索完整的结果集MYSQL_RES *resultmysql_store_result(mysql);//返回结果集中的列数int num_fieldsmysql_num_fields(result);//返回所有字段结构的数组MYSQL_FIELD *fieldsmysql_fetch_fields(result);//从结果集中获取下一行将对应的用户名和密码存入map中while(MYSQL_ROW rowmysql_fetch_row(result)){string temp1(row[0]);string temp2(row[1]);users[temp1]temp2;}
}提取用户名和密码
服务器端解析浏览器的请求报文当解析为POST请求时cgi标志位设置为1并将请求报文的消息体赋值给m_string进而提取出用户名和密码。
//判断http请求是否被完整读入
http_conn::HTTP_CODE http_conn::parse_content(char *text)
{if(m_read_idx(m_content_lengthm_checked_idx)){text[m_content_length]\0;//POST请求中最后为输入的用户名和密码m_stringtext;return GET_REQUEST;}return NO_REQUEST;
}//根据标志判断是登录检测还是注册检测
char flagm_url[1];char *m_url_real(char *)malloc(sizeof(char)*200);
strcpy(m_url_real,/);
strcat(m_url_real,m_url2);
strncpy(m_real_filelen,m_url_real,FILENAME_LEN-len-1);
free(m_url_real);//将用户名和密码提取出来
char name[100],password[100];
int i;//以为分隔符前面的为用户名
for(i5;m_string[i]!;i)name[i-5]m_string[i];
name[i-5]\0;//以为分割符后面的是密码
int j0;
for(ii10;m_string[i]!\0;i,j)password[j]m_string[i];
password[j]\0;同步线程登录注册
通过m_url定位/所在位置根据/后的第一个字符使用分支语句实现页面跳转。具体的
0跳转注册页面GET1跳转登录页面GET5显示图片页面POST6显示视频页面POST7显示关注页面POST
//找到url中/所在的位置进而判断/后第一个字符
const char *pstrrchr(m_url,/);//注册页面
if(*(p1)0)
{char *m_url_real(char *)malloc(sizeof(char)*200);strcpy(m_url_real,/register.html);strncpy(m_real_filelen,m_url_real,strlen(m_url_real));free(m_url_real);
}//登录页面
else if(*(p1)1)
{char *m_url_real(char *)malloc(sizeof(char)*200);strcpy(m_url_real,/log.html);strncpy(m_real_filelen,m_url_real,strlen(m_url_real));free(m_url_real);
}//图片页面
else if(*(p1)5)
{char *m_url_real(char *)malloc(sizeof(char)*200);strcpy(m_url_real,/picture.html);strncpy(m_real_filelen,m_url_real,strlen(m_url_real));free(m_url_real);
}//视频页面
else if(*(p1)6)
{char *m_url_real(char *)malloc(sizeof(char)*200);strcpy(m_url_real,/video.html);strncpy(m_real_filelen,m_url_real,strlen(m_url_real));free(m_url_real);
}//关注页面
else if(*(p1)7)
{char *m_url_real(char *)malloc(sizeof(char)*200);strcpy(m_url_real,/fans.html);strncpy(m_real_filelen,m_url_real,strlen(m_url_real));free(m_url_real);
}//否则发送url实际请求的文件
else strncpy(m_real_filelen,m_url,FILENAME_LEN-len-1);