私はすでに、オフサイトのペイパルバスケットを使用して衣料品やジュエリーを販売する会社のサイトを作成しました。非常に基本的な特注の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;
}
ブール値の管理者ステータス値をセッションデータに格納することは、セキュリティ上の理由から悪い考えであり、悪用される可能性があるという事実を認識しています。これで正しい方向に進んでいるかどうかについてのアドバイスと、上記のようなシステムを実現する方法についての提案をいただければ幸いです。
前もって感謝します。