我已经为使用非现场PayPal篮子销售服装和珠宝的公司制作了一个网站。它有一个非常基本的定制cms,目前只允许网站所有者自己登录。登录后,他可以添加/删除/编辑产品,并在网站的首页上管理基本新闻订阅源。具有不同访问级别的PHP/Codeigniter登录系统
我现在想扩大网站,允许非管理员用户注册,并为他们能够做一些事情,如发布新闻提要上的评论,也可以发布在论坛等,但不希望他们访问管理员可以执行的操作。
我最初的想法是使用类似以下内容:
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;
}
我很清楚的事实,存储在会话的数据的布尔管理员状态值可能是出于安全原因,一个坏主意,并可能被利用。对于我是否正朝着正确的方向前进,以及对于如何完成上述系统的建议,我将不胜感激。
在此先感谢。
你为什么不安装其中一个完全开发的电子商务系统? – 2012-11-22 23:09:00
必须同意你最好使用现成的解决方案之一。在会话中存储值不应该是一个问题,如果你正确地及时地销毁这些值并且没有用户进行高级会话的方法。 –
我很满意网站在用户管理产品的方式方面的运作方式,这个问题与我如何最好地区分不同类型的用户并给予他们对网站的不同访问级别有关。我不使用现成的解决方案的原因是我想学习如何自己做这些东西。 – Marc