在Discuz! X3.5中,新增用户、更新资料、登录session的设置可以通过以下方式进行优化和调整。以下是一些建议和注意事项:
### 1. 新增用户
在新增用户时,除了在UCenter中注册用户外,还需要在Discuz!的相关表中插入用户信息。你提供的代码已经涵盖了大部分内容,但有一些细节可以优化:
- // 1. 在UCenter注册用户
- $uid = uc_user_register($data['username'], $data['u_oriPassword'], '1234567890@qq.com');
- if ($uid <= 0) {
- // 处理注册失败的情况
- showmessage('register_failed', '', array(), array('alert' => 'error'));
- }
- // 2. 新增用户表记录
- DB::insert('common_member', array(
- 'uid' => $uid,
- 'username' => $data['username'],
- 'password' => md5($data['u_oriPassword']),
- 'email' => '1234567890@qq.com',
- 'regdate' => TIMESTAMP,
- 'status' => 0
- ));
- // 3. 新增用户扩展资料表记录
- DB::insert('common_member_profile', array(
- 'uid' => $uid,
- 'realname' => $data['username'],
- 'gender' => 0,
- 'birthyear' => 0,
- 'birthmonth' => 0,
- 'birthday' => 0,
- 'mobile' => $data['mobile']
- ));
- // 4. 新增用户积分表记录
- DB::insert('common_member_count', array(
- 'uid' => $uid,
- 'extcredits1' => 0, // 威望
- 'extcredits2' => 0, // 金钱
- 'extcredits3' => 0, // 贡献
- 'extcredits4' => 0, // 发帖数
- 'extcredits5' => 0 // 精华帖数
- ));
复制代码
### 2. 用户登录
在用户登录时,密码判断和session注入的处理可以通过以下方式进行优化:
- // 1. 获取用户信息
- $members = DB::fetch_all("SELECT * FROM ".DB::table('common_member')." WHERE username = '".addslashes($username)."' LIMIT 1");
- $member = empty($members[0]) ? '' : $members[0];
- if (empty($member)) {
- // 用户不存在
- showmessage('user_not_exists', '', array(), array('alert' => 'error'));
- }
- // 2. 密码判断
- if ($member['password'] != md5($password)) {
- // 密码错误
- showmessage('password_error', '', array(), array('alert' => 'error'));
- }
- // 3. 设置登录状态
- require_once DISCUZ_ROOT.'/source/function/function_member.php';
- setloginstatus($member, 315360000); // 设置登录状态,有效期1年
- // 4. 登录成功提示
- showmessage('login_succeed', 'forum.php', array('username' => $username));
复制代码
### 3. 更新用户资料
在更新用户资料时,确保只更新必要的字段,并且使用正确的条件:
- // 更新用户资料
- DB::update('common_member_profile', array(
- 'realname' => $userinfo->username,
- 'mobile' => $userinfo->mobile
- ), DB::field('uid', $member['uid']));
复制代码
### 注意事项
1. **安全性**:在处理用户输入时,务必使用`addslashes`或`DB::quote`等函数来防止SQL注入攻击。
2. **错误处理**:在每一步操作中,都应该有相应的错误处理机制,确保在出现问题时能够及时反馈给用户。
3. **性能优化**:在插入或更新大量数据时,考虑使用批量操作或事务来提升性能。
### 总结
你提供的代码已经涵盖了大部分功能,但通过上述优化可以进一步提升代码的健壮性和安全性。如果你有其他问题或需要进一步的帮助,请随时提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |