删除内容时如何限制用户使用自己的资产

时间:2019-03-18 08:21:31

标签: php mysql angularjs

我写了一个小应用程序,其中包含用户群和分配给他们的资产。 现在,我正在尝试编写一个仅在未将用户分配给资产时才从数据库删除记录的功能。

加载资产

$http.get("/ewidencja/dbs/assets.php").then(function (response) {
  $scope.aktywa = response.data.records;  
});

加载用户

$http.get("/ewidencja/dbs/users.php").then(function (response) {
  $scope.pracownicy = response.data.records;
});

删除功能

$scope.usunUsera = function(s) {  
if (confirm("Na pewno?")) {
$http.post("/ewidencja/dbs/removeuser.php", {
  'id_pracownika': s
  }).then(function(response) {
    alert("Usunięto");
    }, function(error) {
      alert("Błąd! Dane nie dodane!");
      console.error(error);
    }); 
 } }

我从以下选项中选择用户:

<div class="col-sm-6">
    <h5>Usuń użytkownika</h5>
    <div class="form-group">
      <select ng-model="idPracownika" class="form-control" ng-options="ludzie.idPracownik as ludzie.NazwaPracownika for ludzie in pracownicy"><option value="" selected="selected">Wybierz</option></select>
    </div>
    <button class="btn btn-danger" ng-click="usunUsera(idPracownika)">Usuń użytkownika</button>
  </div>

removeuser.php

$data = json_decode(file_get_contents("php://input"));
$id = $data->id_pracownika;
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "DELETE FROM pracownicy WHERE id_pracownik='".$id."'";
if ($conn->query($sql) === TRUE) {
echo "Usunięto poprawnie";
} else {
echo "Błąd: " . $sql . "<br>" . $conn->error;
}
$conn->close();

现在,即使将用户分配给资产,我也可以将其从数据库中删除,但我想保护此应用程序免受此侵害。

在这种情况下,您能帮我吗?谢谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

您应该在删除查询之前进行一次新查询,并检查用户是否有任何资产。

SELECT COUNT(*) FROM assets WHERE id_user = ?;

然后,您可以将结果存储在计数器中,并使用它来限制是否可以执行删除操作

if(counter==0){
  console.log("No items were deleted");
 }else{
 DELETE FROM....
   }