基于mysql的bbs设计(三)
对于底层数据库,调用mysql的C API函数来进行数据库的修改,内部保存
一定的状态变量(例如用户名,还是留给上一层完成?),对上一层,则提供
用户管理的接口。
Class UserManage {
private:
char myuserid[20]; // 用户的id,未登陆前为空
time logintime; // 用户登陆时间,并用于计算停留时间
char loginhost[20]; //上站地点。
public:
int NewUser( char *userid, char *passwd );
新建一个用户,判断是否已经有,其他资料暂时为空,
firstlogintime,权限等设缺省值。
int UserLogin( char *userid, char *passwd );
用户登陆,验证密码,
int ChangePasswd( char *oldpasswd, char *newpasswd );
修改密码,要求原密码一致。
int ChangePriData( char *newname, char *newemail,
char *newaddr );
改变基本数据,泥称,email,住址。。。。
int ModifyNumData( int addlogin, int addpost );
修改文章数,上站次数,等数据。。。。注意调用对象。
int UserLogout();
用户退出,修改lastlogin,staytime,loginhost等
// 普通查询命令
int QueryCommonData( const char * userid, int& loginnum,
char * username, int& postnum,
time& lastlogin, char *lasthost );
查询网友基本信息。
// 特权指令,函数在完成功能前,先判断权限。
int QueryPriData( const char * userid, char *email,
char *addr );
查询基本信息,普通人只能查自己,有特权才能查其他人。
int ModifyUserLevel( BOOL isAdd, unsigned long level );
修改用户的权限,
int ModifyUserId( char *oldid, char *newid );
char *newemail, char *newaddr );
修改用户的基本数据。
int ModifyUserNumdata( char *userid, int addlogin, int addpost );
修改用户的文章数等数据。
int ModifyUserPasswd( char *userid, char *newpasswd );
修改用户的密码。
}
以上各个函数难度不大,都是执行相应的sql语句,访问mysql数据库,
是否将一般指令归到特权指令中去呢?权限的检查,是放在这一层还是上一层?
这更多的是看考虑的着重点,是看程序的清晰性还是代码的简练,可能还是
看代码吧,毕竟要考虑访问量,另外,上层服务层是否也应该考虑权限检查
问题呢?

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP에서 int형을 byte로 변환하는 방법에 대한 자세한 설명 PHP에서는 네트워크 데이터 전송이나 파일 처리, 암호화 알고리즘 등을 다룰 때 정수형(int)을 byte(byte)형으로 변환해야 하는 경우가 많습니다. . 이번 글에서는 int형을 byte형으로 변환하는 방법을 자세히 소개하고 구체적인 코드 예시를 제공하겠습니다. 1. int형과 byte의 관계 컴퓨터 분야에서 기본 데이터형 int는 정수를 나타내고, byte(바이트)는 컴퓨터 저장 단위로 보통 8비트 바이너리 데이터이다.

C++에서 int 유형의 변수는 양수 또는 음수 정수 값만 보유할 수 있으며 소수 값은 보유할 수 없습니다. 이를 위해 float 및 double 값을 사용할 수 있습니다. double 데이터형은 소수점 이하 7자리까지 소수점 이하 자릿수를 저장하기 위해 만들어졌습니다. 정수를 double 데이터 형식으로 변환하는 것은 컴파일러에 의해 자동으로 수행되거나("암시적" 변환이라고 함) 프로그래머가 컴파일러에서 명시적으로 요청할 수 있습니다("명시적" 변환이라고 함). 다음 섹션에서는 다양한 변환 방법을 다룹니다. 암시적 변환 컴파일러는 암시적 유형 변환을 자동으로 수행합니다. 이를 달성하려면 부동 소수점 유형과 정수 유형의 두 가지 변수가 필요합니다. 단순히 부동 소수점 값이나 변수를 정수 변수에 할당하면 컴파일러가 다른 모든 사항을 처리합니다.

int32의 값 범위는 -2의 31승부터 2의 31승 - 1, 즉 -2147483648부터 2147483647까지입니다. int32는 부호 있는 정수 유형입니다. 즉, 양수, 음수 및 0을 나타낼 수 있습니다. 1비트를 사용하여 부호 비트를 나타내고 나머지 31비트는 숫자 값을 나타내는 데 사용됩니다. 부호비트를 표현하는데 1비트가 사용되므로 int32비트의 유효수는 31이다.

변환 방법: 1. Itoa() 함수를 사용하여 "strconv.Itoa(num)" 구문을 사용합니다. 2. FormatInt() 함수를 사용하여 int 형식의 데이터를 지정된 베이스로 변환하고 문자열 형식으로 반환합니다. 구문 "strconv .FormatInt(num,10)".

int 유형이 차지하는 바이트 수는 프로그래밍 언어 및 하드웨어 플랫폼에 따라 다를 수 있습니다. 자세한 소개: 1. C 언어에서 int 유형은 일반적으로 2바이트 또는 4바이트를 차지합니다. 32비트 시스템에서는 int 유형이 4바이트를 차지하고, 16비트 시스템에서는 int 유형이 2바이트를 차지합니다. 64비트 시스템에서 int 유형은 8바이트를 차지할 수 있습니다. 2. Java에서는 int 유형이 일반적으로 4바이트를 차지하는 반면, Python에서는 int 유형에 바이트 제한이 없으며 자동으로 조정될 수 있습니다.

Java에서 int는 32비트 부호 있는 데이터 유형이고 해당 변수에는 32비트 메모리가 필요합니다. int 데이터 유형의 유효한 범위는 -2147483648에서 2147483647이며 이 범위의 모든 정수를 정수 리터럴이라고 합니다. 정수 리터럴은 "int num1 = 21;"과 같이 int 변수에 할당될 수 있습니다.

int는 4바이트를 차지합니다. 이는 int 변수가 -2,147,483,648부터 2,147,483,647까지의 정수 값을 저장할 수 있음을 의미합니다. 어떤 경우에는 2바이트일 수도 있고 8바이트일 수도 있습니다. Int는 정수를 나타내는 데 사용되는 데이터 유형입니다. 프로그램의 정확성과 성능을 보장하려면 특정 상황에 따라 적절한 데이터 유형을 선택해야 합니다.

VB의 Int는 정수를 취하는 함수를 의미합니다. 구문은 "int(x)"와 같습니다. 이는 x보다 크지 않은 가장 큰 정수를 취한다는 것을 의미합니다. int 함수와 유사한 함수에는 소수점을 삭제하는 함수가 포함됩니다. 부분을 선택하고 나머지를 반환합니다.
