prrrrrrr
@prrrrrrr
Верстаю сразу на PHP.

Как перед отправкой GET сверить данные из БД?

Есть GET метод удаления записи. Как можно сверить данные из БД, перед отправкой метода, чтобы идентификатор юзера $_SESSION['logged_user'] соответствовал author_id?

Обработчик выглядит так:
$id = $_GET['id'];
$posts = R::load('posts', $id);

R::trash($posts);

echo 'udalos';


Пробую так:
if ((int)['author_id'] === $_SESSION['logged_user']) {
$id = $_GET['id'];
$posts = R::load('posts', $id);

R::trash($posts);

echo 'udalos'; }
else { echo 'ne udalos'; }


И так:
if ($posts = R::load('posts', 'author_id = ?', [$_SESSION['logged_user']->id])) {
$id = $_GET['id'];
$posts = R::load('posts', $id);

R::trash($posts);

echo 'udalos'; }
else { echo 'ne udalos'; }

Не получается
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
seganim
@seganim
PHP-программист, программный инженер
Если в $_SESSION['logged_user'] хранится ID, то оно, если целиком обьект, то $_SESSION['logged_user']->id
$id = $_GET['id'];
$posts = R::load('posts', $id);
if ($posts->author_id==$_SESSION['logged_user']->id) {
R::trash($posts);
echo 'udalos';
}
else { echo 'ne udalos'; }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Есть GET метод удаления записи.

Посредством GET лучше ничего не удалять, для этого есть POST с защитой от CSRF атак. Иначе злоумышленник простым перебором ссылок сможет по удалять записи, либо вставит ссылку на удаление в картинку, просмотрев которую пользователь удалит запись.
GET не должно менять состояние системы, только запросы на получение данных, фильтры, контент и прочее.
POST манипуляции с данными, создание, правка, удаление.
Ну а выше у seganim один из вариантов решения вашего вопроса.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Шэдевр ) елс без ифа - новый тренд )
$id = $_GET['id'];
$posts = R::load('posts', $id);

R::trash($posts);

echo 'udalos';
else { echo 'ne udalos'; }


Не получается
у девочек на корбке механике "не получается", что конкретно происходит? Ошибки, результаты?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы