javascript — отключить изменение значения в JS-функции с помощью элемента проверки пользователем

У меня есть функция 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.

}

Мой вопрос:

  1. Через элемент проверки пользователь может изменить функцию post_id значение, так как я могу предотвратить его изменение?

  2. Если это не может быть заблокировано, значит, как я могу сохранить само мое старое значение, то есть то, что изменило пользователь, не должно влиять на исходную функцию 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]'";

0

Решение

В вашем 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 или большого количества интерактивных проверок во внешнем интерфейсе и любых подобных процедур все равно все закончится проверкой вашего внутреннего интерфейса.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]