Обработать действие по удалению базы данных на той же странице PHP с постом

Я создаю PHP-приложение для записей о сотрудниках процесса. В этом приложении основной экран заполняет записи базы данных и кнопки действий. когда пользователь нажимает кнопку действия, он берет идентификатор базы данных из таблицы и просматривает другой файл, чтобы удалить эту запись, а затем перенаправляет обратно на ту же страницу. Этот механизм реализован с использованием метода HTML _GET. это означает, что любой может увидеть идентификатор строки в фиде URL, и если кто-либо запросит этот URL с другим идентификатором строки, файл PHP удалит запись, поскольку никаких других мер безопасности для предотвращения этого не было. а также это приложение не использует какой-либо вид сессии.

это мой код для задачи, о которой я упоминал выше.

echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>";

и это мой код rejectone.php

<?php
$lid =$_GET['id'];
include 'database.php';
$accval = "Accept";
try {
   $query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = '$lid'";
    $stmt = $con->prepare( $query );
    $stmt->bindParam(1, $id);
    $stmt->execute();
}

catch(PDOException $exception){
    die('ERROR: ' . $exception->getMessage());
}   
header( "refresh:0;url=bs.php" );           
?>

У меня два вопроса

1.) Как запустить задачу отклонения в том же файле PHP без перенаправления в другой файл PHP

2.) Как я могу использовать метод HTML _POST вместо метода get для передачи данных, если я все еще использую файл jejectone.php

Спасибо!!

2 ответа

Решение

Прежде всего измените свою строку:

echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>";

в

echo '<a href="javascript:;" class="btn btn-danger btn-xs m-r-1em delete-item" primary-key="'.$lvid.'">Cancal</a>';

Если вы не включили jQuery на свой сайт, вы можете сделать это, добавив этот скрипт на свою страницу непосредственно перед закрытием</head> тег

<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script>

Добавьте этот файл JavaScript внизу страницы, перед закрытием </body>

<script type="text/javascript">

$(document).ready(function(){
    $(document).on('click', '.delete-item', function(e){

        e.preventDefault();
        if(!confirm('Are you sure you want to delete this item?')) return false;

        $.post('bs.php', {'id': t.attr('primary-key'), 'delete_item': 1}, function(e){
            window.location = 'bs.php';
        })

    })  
})

</script>

Скопируйте ваш rejectone.php в bs.php, но внесите следующие изменения:

if(isset($_POST['delete_item']))
{
    $lid = (int)$_POST['id'];
    include 'database.php';
    $accval = "Accept";
    try {
       $query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = :lid ";
        $stmt = $con->prepare( $query );
        $stmt->bindParam(':lid', $lid );
        $stmt->execute();
    }

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

}

Вот и все.

Используйте ajax post метод. См. Полный пример принятого решения с примером кода для получения дополнительной информации здесь: Удалите запись MySQLi без отображения идентификатора в URL. Затем с помощью jquery удалите эту запись со страницы, что обеспечит более хороший пользовательский интерфейс.

Другие вопросы по тегам