Проблема с функцией удаления http в Angular, ошибки нет - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь удалить запись из моей базы данных. На данный момент правильный идентификатор проходит, как я вижу в параметрах строки запроса, и я не получаю никаких ошибок. Тем не менее, строка не удаляется, я начинаю думать, что это просто какая-то синтаксическая ошибка, но я не уверен.

remove-like. php

<?php

$id=isset($_GET['id']) ? $_GET['id'] : die('ERROR: id not found.');

if($_POST) {

include 'connectPDO.php';

try {
    $query = "DELETE FROM likes WHERE id = ?";

    $stmt = $con->prepare($query);

    $stmt->bindParam(1, $id);

    $stmt->execute();

} catch (PDOException $exception) {
    die('ERROR: ' . $exception->getMessage());
}
}

Это служебный файл, в котором я его называю.
forum.service.ts

  removeLike(id: string) {
    return this.http.delete(`${this.baseUrl}/remove-like.php?id=${id}`);
  }

Тогда это часть, где я вызываю эту функцию в моем компоненте.
themes.component.ts

  clickDislike() {
    this.forumService.removeLike(this.dataService.getToken() + 'topic' + this.forumService.getLikeToken()).subscribe(result => {
  this.ngOnInit();
    })
  }

1 Ответ

1 голос
/ 06 апреля 2020

Вы никогда не входите в свой блок условий, потому что if ($_POST) всегда вернет false в вашем случае. Действительно, вы вызываете эту конечную точку с помощью запроса http DELETE с пустым телом.

<?php

$id=isset($_GET['id']) ? $_GET['id'] : die('ERROR: id not found.');

include 'connectPDO.php';

try {
    $query = "DELETE FROM likes WHERE id = ?";

    $stmt = $con->prepare($query);

    $stmt->bindParam(1, $id);

    $stmt->execute();

} catch (PDOException $exception) {
    die('ERROR: ' . $exception->getMessage());
}

Если вы хотите убедиться, что ваша конечная точка вызывается с правильным HTTP-глаголом, обратитесь к этот вопрос , и добавьте:

if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
     // Your code
}

Кроме того, я рекомендую добавить механизм безопасности, если это еще не так (например, контроль аутентификации), поскольку общедоступная конечная точка, которая удаляет строки, является проблемой безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...