2012-11-22 36 views
0

我已经为使用非现场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; 
} 

我很清楚的事实,存储在会话的数据的布尔管理员状态值可能是出于安全原因,一个坏主意,并可能被利用。对于我是否正朝着正确的方向前进,以及对于如何完成上述系统的建议,我将不胜感激。

在此先感谢。

+0

你为什么不安装其中一个完全开发的电子商务系统? – 2012-11-22 23:09:00

+0

必须同意你最好使用现成的解决方案之一。在会话中存储值不应该是一个问题,如果你正确地及时地销毁这些值并且没有用户进行高级会话的方法。 –

+0

我很满意网站在用户管理产品的方式方面的运作方式,这个问题与我如何最好地区分不同类型的用户并给予他们对网站的不同访问级别有关。我不使用现成的解决方案的原因是我想学习如何自己做这些东西。 – Marc

回答

1
  • 使用笨表单验证第一 - 确保你发送给数据库
  • 之前有正确的数据,我认为这将是值得打破了检查用户名到它自己的方法。 如果返回true,则调用检查密码等,这也会使得它稍后变得更加灵活。在XSS清洁形式输出的习惯
  • 尝试,并得到,只是把TRUE字段名称

    $username = trim($this->input->post('username', TRUE)); 
    
  • 当你想要做这样的事情通过电子邮件重置密码
  • 后,检查出离子验证 https://github.com/benedmunds/CodeIgniter-Ion-Auth
+0

非常感谢。非常有用的信息:)。马克。 – Marc

相关问题