基于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
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPでint型をbyte型に変換する方法を詳しく解説 PHPでは、ネットワークデータ送信やファイル処理、暗号化アルゴリズムなどを扱う場合など、整数型(int)をバイト型(Byte)に変換する必要が生じることがよくあります。 。この記事では、int型をbyte型に変換する方法と具体的なコード例を詳しく紹介します。 1. int 型と byte の関係 コンピュータ分野では、基本データ型 int は整数を表しますが、byte (バイト) はコンピュータの記憶単位で、通常は 8 ビットのバイナリデータです

C++ では、int 型の変数は正または負の整数値のみを保持でき、10 進数値を保持できません。この目的に使用できる float 値と double 値があります。 double データ型は、小数点以下 7 桁までの小数を格納するために作成されました。整数から double データ型への変換は、コンパイラによって自動的に実行することも (「暗黙的」変換と呼ばれます)、プログラマがコンパイラに明示的に要求することもできます (「明示的」変換と呼ばれます)。次のセクションでは、さまざまな変換方法について説明します。暗黙的な変換 コンパイラは暗黙的な型変換を自動的に実行します。これを実現するには、浮動小数点型と整数型の 2 つの変数が必要です。浮動小数点値または変数を整数変数に代入するだけでは、コンパイラが他のすべてのことを処理します。

int32 の値の範囲は、-2 の 31 乗から 2 の 31 乗 - 1、つまり -2147483648 ~ 2147483647 です。 int32 は符号付き整数型です。つまり、正の数、負の数、ゼロを表現できます。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 バイトになることもあります。一般的に使用されるデータ型は、整数を表すために使用されます。プログラムの正確さとパフォーマンスを確保するには、特定の状況に応じて適切なデータ型を選択する必要があります。

VB の Int は、整数を受け取る関数を指します。その構文は "int(x)" などで、x 以下の最大の整数を取ることを意味します。int 関数に似た関数には、小数点を削除する Fix 関数が含まれます。部分を取り、残りの次の整数を返します。
