Хорошо, поэтому лучший способ "обезопасить" себя от таких вещей - просто создать сеанс в то время, когда пользователь входит на ваш сайт с двумя значениями, сохраненными в этом сеансе;
1) Идентификатор первичного ключа их базы данных и
2) элемент сеанса с именем 'logged_in'
В то время, когда ваш пользователь будет заходить на ваш сайт, вы должны хранить эти два значения следующим образом:
$this->session->set_userdata('logged_in', true);
$this->session->set_userdata('user_id', $id);
Где $ id извлекается из записи пользователя во время аутентификации.
Теперь, когда они у вас есть, следующая часть будет заключаться в том, что в вашем контроллере вы поместите оператор if в эту проверку, если пользователь вошел в систему, как таковой;
function show($id) {
if($this->session->userdata('logged_in')) {
$posts = $this->Model_posts->get_user_posts($id);
}
}
Теперь в вашей модели вы бы создали функцию для извлечения записи, которую вы хотите, чтобы пользователь мог просматривать, основываясь на его user_id. Мы скажем, например, сообщения пользователя.
function get_user_posts($user_id, $post_id) {
$sql = "SELECT * FROM posts WHERE user_id = ? AND id = ?";
$binds = array($user_id, $post_id);
$qry = $this->db->query($sql, $binds);
$result = array();
while($row = $qry->result_array()) {
array_push($result, $row);
}
return $result;
}
Теперь, когда вошедший в систему пользователь или посетитель пытается получить доступ к записям, которые ему не принадлежат, они не будут извлекать какие-либо записи, поскольку оператор select ограничивает то, что возвращается только этому пользователю.