我已经为一家使用非现场贝宝购物篮销售服装和珠宝的公司创建了一个网站。它有一个非常基本的定制 cms,目前只允许网站所有者自己登录。登录后,他可以添加/删除/编辑产品,并在网站首页管理基本的新闻提要。
我现在想扩展站点以允许非管理员用户注册,并让他们能够做一些事情,比如在新闻提要上发表评论,也能够在论坛上发帖等,但不希望他们可以访问管理员可以执行的操作。
我最初的想法是使用以下内容:
public function validate_user()
{
$username = trim($this->input->post('username'));
$password = trim($this->input->post('password'));
$password_md5 = md5($password);
//query database searching for user
$this->db->where('username', $username);
$query = $this->db->get('users');
//if user found in database, set session info
if ($query->num_rows() == 1) {
$result = $query->row();
$output['username'] = TRUE;
//check if password correct
if ($result->password == $password_md5) {
$output['password'] = TRUE;
if ($result->admin) {
$admin = TRUE;
} else {
$admin = FALSE;
}
//set session data for user including validated status
$data = array(
'id' => $result->id,
'username' => $result->username,
'fname' => $result->fname,
'lname' => $result->lname,
'admin' => $admin,
'validated' => TRUE
);
$this->session->set_userdata($data);
} else {
$output['password'] = FALSE;
}
} else {
$output['username'] = FALSE;
}
return $output;
}
我意识到,出于安全原因,在会话数据中存储布尔管理员状态值可能是一个坏主意,并且可能被利用。我将不胜感激有关我是否朝着正确的方向前进的一些建议,以及有关如何完成像我上面描述的那样的系统的任何建议。
提前致谢。