Users access control - Blog system using PhP MySQL
Здравейте,
Предварително се извинявам ако е засегнат въпроса в друга тема , не можах да го открия.
Проблема в момента е че когато един User редактира съдържанието на поста си , то бъде извиквано с функция getPostByID(), която прави заявка към базата и взима всички данни от нея само за този User, но проверката на формата проверява , какво e изписано в полето за адреси: . Проблемът тук е че проверката следи дали има такъв пост изобщо, а не дали е в притежание на логнатия в момента user.
Ако в това поле изпиша друго ID , което съответства на друг потребителски пост , то ми дава да го редактирам независимо с какъв user съм логнат.
function getPostById(int $id)
{
$statement = self::$db->prepare(
"SELECT posts.id, title, content, date, full_name, user_id " .
"FROM posts LEFT JOIN users on posts.user_id = users.id " .
"WHERE posts.id = ?");
$statement->bind_param("i", $id);
$statement->execute();
$result = $statement->get_result()->fetch_assoc();
return $result;
}
Това ми е функцията, с която взимам постовете по ID , за да бъдат редактирани. Как мога да огранича взимането само на User-а , който иска да редактира конкретно неговите постове.
Проверката , която проверява дали има изобщо ID в таблицата :
$post = $this->model->getPostById($id);
if (!$post) {
$this->addErrorMessage("Error: post does not exist");
$this->redirect("posts");
}
$this->post = $post;
}
Същото се отнася и за User-ите , които съм написал аналогично на постовете. Всеки User може да редактира данните на друг User. Сякаш всеки user сам по себе си е администратор и има пълни права.
Тествах метод с който добавих поле към таблицата на всеки user -> Acess (0, 1) , ако е 1 може да го прави , ако е 0 не може. Но така ограничавам само 1 потребител (Admin) да извършва тези действия и user-ите не могат да редактират техните си данни.
Ще съм благодарен на съвет , как да го направя.
Също така , тук в този форум , ако напишем ръчно друго ID < горе в полето , където този пост в момента има ID - 11524, то системата на СофтУни също позволява аз да виждам редактиращата форма на постовете на други колеги, но не мога да ги редактирам? Би трябвало да не ме допуска до линка.
Благодаря предварително.