#javascript #php #jquery #html
#javascript #php #jquery #HTML
Вопрос:
У меня проблема с удалением записей из базы данных с использованием ajax и jquery. Если я нажму на кнопку, ничего не произойдет. существует мой css
:
<button class='delete_p' id_p='<?php echo $post_id; ?>'>x</button>"
<script type="text/javascript" src="jquery-1.11.1.js"></script>
<script src="delete_post.js"></script>
и есть ajax
то, что я использую:
$(document).ready(function(){
$('.delete_p').click(function(){
var del_id = $(this).attr('id_p');
$.ajax({
type:'POST',
url:'delete_post.php',
data:'delete_id=' del_id,
});
});
});
и есть delete_post.php
то, что я использую:
<?php
include 'esas/core/database/connect.php';
$id = $_POST['delete_id'];
$query = "DELETE FROM `status` WHERE `id` = '$id'";
?>
Комментарии:
1. Вы широко открыты для внедрения SQL .
2. Вам нужно еще немного устранить неполадки. Например, задается ли del_id даже в вашем JS? (используйте предупреждение, чтобы узнать)
3. @EdCottrell Он защищен от SQL-инъекций, потому что его SQL-запрос никогда не выполняется.
4. @blex Нет, это не так. Если злоумышленник отправляет значение для
delete_id
like1' OR '1' = '1
todelete_post.php
, это SQL-инъекция. Тот факт, что его вызов AJAX в настоящее время заблокирован, не меняет того факта, что серверная часть очень уязвима.5. Я знаю, что у меня есть sql-инъекция. и я это исправлю. 😉
Ответ №1:
data
должна быть не строка, а объект JavaScript:
$.ajax({
type: 'POST',
url: 'delete_post.php',
data: {
delete_id: del_id
}
});
Комментарии:
1. @user3722203 в дополнение к этому попробуйте удалить одинарные кавычки
$id
в вашем SQL-запросе, потому что я предполагаю, что это целые числа, а не строки. О, и в опубликованном вами вопросе вы задаете строку запроса $, но вы никогда не выполняете ее, поэтому ничего не удаляется.2. Отлично! И да, если вы планируете сделать это общедоступным, позаботьтесь о внедрении SQL.