У меня есть функция JS, чтобы удалить собственный пост пользователя.
Function delete(post_id)
{
//Here comes AJAX call to delete.php file
// In delete.php file i have a query to delete the post from DB using that
post_id parameter.
}
Мой вопрос:
Через элемент проверки пользователь может изменить функцию post_id значение, так как я могу предотвратить его изменение?
Если это не может быть заблокировано, значит, как я могу сохранить само мое старое значение, то есть то, что изменило пользователь, не должно влиять на исходную функцию post_id значение.
Например:
Пользователь опубликовал 2 сообщения с post_id 1 и 2 соответственно.
если пользователь хочет удалить 2-е сообщение, он может использовать кнопку удаления 2-го сообщения, чтобы удалить это сообщение.
Функция будет как:
Function delete(2) //post_id is 2
{
//AJAX call to delete.php
}
Как предотвращать пользователь от изменения post_id в функции к 1 ?
Если это не может быть предотвращено, значит, как я могу предотвратить передачу этого изменения? post_id в delete.php
Delete.php:
"DELETE FROM `posts` WHERE `postid`='$_POST[post_id]' and user_id='$_SESSION[id]'";
В вашем delete.php
можете поставить SESSION
проверьте, имеет ли этот пользователь право доступа к этим данным, прежде чем продолжить удаление.
Даже если пользователь изменяет id
До тех пор, пока это id
ему / ей назначено, он / она имеет право удалить эту строку в вашей базе данных.
Только он / она будет винить за удаление строки в вашей базе данных.
Если вы все еще хотите сохранить удаленный пост, вы можете добавить еще один столбец для вашей таблицы, скажем, status
, Это будет иметь только два типа значения, 1
или же 0
, Значение 1
означает, что он активен и доступен для просмотра, и если он 0
значит, оно скрыто (пользователь будет фактически думать, что удаленный пост удален навсегда).
Когда пользователь решит удалить свой пост, вы просто запустите UPDATE
запросить и сделать эту строку 0
, Он все еще будет в вашей базе данных, но скрыт для него / нее и всех других пользователей вашей системы. Вы можете создать страницу администратора, где вы можете фильтровать удаленные (скрытые) и активные сообщения.
Даже если пользователь изменяет GET
параметр в URL, если у вас есть условие WHERE status = 0
, он не будет виден в его / ее конце.
Или вы можете запретить пользователю удалять его / ее старый пост. Поместив диапазон в ваш DELETE
запрос (при условии, что в вашей таблице есть столбец TIMESTAMP или DATETIME).
... WHERE id = ? AND user_id = ? AND date_posted < ? AND date_posted > ?
Нет способа помешать пользователям вашей системы изменить элементы в их конце. Даже если вы отключите right click
с помощью javascript или большого количества интерактивных проверок во внешнем интерфейсе и любых подобных процедур все равно все закончится проверкой вашего внутреннего интерфейса.
Других решений пока нет …