ДОБЕРИТЕСЬ по сравнению с лучшими практиками POST

Не существует решения для a ^ k + b ^ k = c ^ k при k> 2.

Из Википедии: -

В теории чисел Последняя теорема Ферма утверждает, что никакие три натуральных числа a, b и c не удовлетворяют уравнению a ^ n + b ^ n = c ^ n для любого целочисленного значения n больше 2. Известно, что случаи n = 1 и n = 2 имеют бесконечное число решений со времен античности. Это также было доказано. Таким образом, вы можете попытаться решить только для значения k = 2.

Для k = 2 . Вы можете использовать эту ссылку

.

14
задан GeekJock 24 March 2009 в 19:59
поделиться

9 ответов

В целом это не хорошая идея иметь ПОЛУЧИТЬ запрос, который изменяет состояние системы так или иначе, как удаление объекта.

У Вас могла быть своя форма, похожи на это:

<form action='item.php' method='POST' id='form'>
    <input type='hidden' name='action' value='delete' />
    <input type='hidden' name='id' value='{item_id}' />
    <a href="" onclick="document.getElementById('form').submit(); return false;">Delete item</a>
</form>
18
ответ дан 1 December 2019 в 06:54
поделиться

Используйте POST для чего-либо, что изменяет постоянное состояние в базе данных. Вы не хотите поисковые роботы, посещая Ваш удалять ссылки!
Имейте чтение в Architecture Всемирной паутины, Объем Один и URIs, Адресуемость, и использование HTTP ДОБИРАЕТСЯ и POST W3C.

Править: Иногда, хотя необходимо использовать, ДОБИРАЮТСЯ. Например, URL активации членства, которые отправляются в электронных письмах, ДОБИРАЮТСЯ и должен так или иначе изменить базу данных.

19
ответ дан 1 December 2019 в 06:54
поделиться

Вы ничего никогда не должны изменять в своей базе данных (кроме регистрирующейся информации или других эфемерных данных) от ПОЛУЧИТЬ запроса. Проблема - то, что существует различное программное обеспечение веб-сканирования, веб-акселераторы, антивирусные программы, и т.п., который выполнит ПОЛУЧИТЬ запрос на каждом URL, который они находят; Вы не хотели бы, чтобы они удалили объекты автоматически, когда они делают так. ДОБЕРИТЕСЬ также уязвимо для подделки запроса перекрестного сайта; если взломщик заставляет одного из Ваших пользователей нажать на ссылку, которая выполняет плохое действие (например, создавая tinyurl, который перенаправляет к удалить URL), то они могут обмануть пользователя в использование их полномочий удалить что-то, не понимая это.

Да, Вам будет нужна форма, которую Вы отправляете для создания запроса POST. Другая опция состоит в том, чтобы использовать JavaScript и XMLHttpRequest, но та работа привычки для пользователей, которым отключили JavaScript.

Необходимо также удостовериться, чтобы, после того как Вы приняли данные из запроса POST, вместо того, чтобы возвратить новую страницу в ответ на тот запрос, Вы перенаправили пользователя к странице, к которой получает доступ ПОЛУЧИТЬ запрос. Таким образом, они случайно не снова пошлют запрос POST, если они поразят перезагрузку или поразят их кнопку "Назад" позже в их сессии просмотра.

8
ответ дан 1 December 2019 в 06:54
поделиться

Вот хороший пример того, почему не использовать, ДОБИРАЮТСЯ для изменения состояния сервера:

http://www.infoworld.com/article/08/06/16/25FE-stupid-users-part-3-admins_5.html

Ключевая часть:

"Это вошло в административную область и перешло по 'удалить' ссылке для каждой записи", говорит администратор.

Если бы удаление было кодировано как POST, то этого никогда не происходило бы. (OTOH у нас отняли бы забавную историю системного администратора.)

3
ответ дан 1 December 2019 в 06:54
поделиться

Вы не хотите использовать, Добираются из-за остальных, принцип не разрешения Добирается для изменения состояния системы. Если Вам не нравится, когда поисковые системы удаляют все Ваше содержание.

Вам не будет нужна форма для каждого объекта; можно использовать одну форму method=post вокруг списка с delete_ {идентификационный} входной type=submit. Или, более умно, <вводит имя type=submit = "delete_item" значение = "{идентификатор}">. Имена позволяются на кнопках отправки.

На Ваш вопрос в комментариях, <вводит имя type=submit = "action_ {идентификатор}" значение = "Удаляет">, мог бы работать лучше, хотя это страдает от некоторых проблем, которые работали бы плохо на локализованные сайты. Можно всегда возвращаться к Кнопке HTML для немного большего количества управления презентацией. Это действует как кнопка отправки по умолчанию.

То, что можно получить дополнительную, нежелательную информацию в представлении, смягчено средним случаем передачи обратно намного большей страницы, чем необходимый с предложенным решением формы на объект, когда Вы просто просматриваете список. Можно всегда использовать JavaScript для замены поведением формы простого HTML с более умной версией для способных к JavaScript клиентов.

Если Вы собираетесь связаться с "Получением" для удаления, необходимо возвратиться, страница подтверждения с этим Добираются, это на самом деле делает сообщение после подтверждения.

3
ответ дан 1 December 2019 в 06:54
поделиться

POST не является защитой от всего злонамеренного поведения, поскольку некоторые люди подразумевали. Злонамеренные пользователи могут все еще создать ссылки (которые содержат JavaScript, чтобы сделать POST), и вызовите те же проблемы сценариев перекрестного сайта, как с ДОБИРАЮТСЯ. (<href = "javascript:function () {...}"/>)

Тем не менее все другие причины использования POST ДОБИРАЮТСЯ, применяются (поисковые роботы и т.п.).

2
ответ дан 1 December 2019 в 06:54
поделиться

Как другие сказали, это - действительно плохая идея использовать, ДОБИРАЮТСЯ для разрушительных операций, любят, удаляют, особенно на стоящих с Интернетом веб-сайтах (или корпорации с устройством Google Mini), где поисковые роботы могли случайно удалить все Ваши данные.

Если Вы не хотите использовать форму, используйте XMLHttpRequest для отправки POST в сервер. Вы могли даже установить метод, чтобы УДАЛИТЬ если Ваши поддержки сервера это.

Если Вы не можете использовать JavaScript и XHR (Ваши пользователи, живые в 1999), и Вы не хотите использовать форму в своем списке, использовать ссылку на отдельную страницу, где можно показать форму и, вероятно, 'Вы уверены?' сообщение.

Лучшей вещью сделать является, вероятно, комбинация этих двух опций выше: Представьте ссылку на отдельную страницу с формой, но используйте JavaScript для перезаписи ссылки как вызова XHR. Тем путем у пользователей с 1999 или 2009 может оба быть оптимальный опыт.

0
ответ дан 1 December 2019 в 06:54
поделиться

Еще лучше сделать это с, ДОБИРАЮТСЯ.

Если Ваша проблема состоит в том, что Вам не нравится ужасный URL Вашей ссылки, необходимо смочь зафиксировать это с mod_rewrite (при использовании веб-сервера Apache).

Править: Нет никакой причины вообще для использования POST здесь. Нет. Причина.

Люди здесь пишут о безопасном и небезопасном, как будто chosing метод может влиять на безопасность всегда. Конечно, необходимо аутентифицировать пользователя, какой метод Вы выбираете. Если Вы не делаете, то Ваше программное обеспечение уже повреждается. Если Вы используете JavaScript для эмуляции отправки формы, когда Вы не имеете формы и не нуждаетесь в ней, не нуждаются ни в каком JavaScript вообще, то Ваше программное обеспечение уже повреждается.

На самом деле приблизительно 90% веб-программного обеспечения повреждаются, потому что люди понятия не имеют о том, что они делают.

Проигнорируйте то, что эти комментарии были в большой степени minused некоторыми странными людьми. Избегайте JavaScript (никакая потребность), избегайте POST (никакая причина), аутентифицируйте своего пользователя (безопасность), сделайте href красивое с mod_rewrite или некоторым другим путем (являющийся хорошим).

-12
ответ дан 1 December 2019 в 06:54
поделиться

Вы не должны использовать href для удаления элемент.

Я бы посоветовал сделать это старомодным способом и реализовать форму-сообщение для каждой строки / элемента.

Например:

<tr><td>Item 1</td><td><form action=/delete method=post><input type=hidden name=id value=1><input type=submit value=Delete></form></tr>
<tr><td>Item 2</td><td><form action=/delete method=post><input type=hidden name=id value=2><input type=submit value=Delete></form></tr>
<tr><td>Item 5</td><td><form action=/delete method=post><input type=hidden name=id value=5><input type=submit value=Delete></form></tr>

Два других варианта: 1) использование одного с для каждого элемента 2) Ajax (но вам нужно знать Ajax)

0
ответ дан 1 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: