Предотвращение формы повторно отправляет в php при нажатии f5

У меня есть лучшее решение с использованием itertools следующим образом:

from itertools import product
n = 4 #number of elements
s = 3 #sum of elements
r = []
for x in range(n):
    r.append(x)
result = [p for p in product(r, repeat=n) if sum(p) == s]
print(len(result))
print(result)

Я говорю, что это лучше, потому что это заняло 0,1 секунды в моей системе, в то время как ваш код с numpy занял 0,2 секунды.

enter image description here

enter link description here

Но, поскольку n = 100 и s = 6, этот код требует времени, чтобы пройти все комбинации, я думаю, потребуются дни, чтобы вычислить результаты.

14
задан code-jaff 26 September 2012 в 20:57
поделиться

3 ответа

Ваш метод мог работать в теории, но существует намного более легкий путь.

После представления формы успешно, выполните перенаправление. Не имеет значения, где к, но это очистит $ _POST.

header('Location: http://www.example.com/form.php');

В Вашем случае это кажется, что Вы хотите перенаправить к странице, Вы уже включены. Добавьте $ _GET параметр к URL, если Вы хотите отобразить сообщение с подтверждением.

Надеюсь, это поможет,

Tom

41
ответ дан 1 December 2019 в 05:56
поделиться

Решением является шаблон, обычно известный, как Отправляют/Перенаправляют/Получают

10
ответ дан 1 December 2019 в 05:56
поделиться

Лучший способ обработать формы состоит в том, чтобы использовать самопредставление и перенаправление. Что-то вроде этого:

if (isset($_POST)) {
  // Perform your validation and whatever it is you wanted to do
  // Perform your redirect
}

// If we get here they didn't submit the form - display it to them.

Используя платформу CodeIgniter:

function index() {
  $this->load->library('validation');
  // Your validation rules

  if ($this->form_validation->run()) {
    // Perform your database changes via your model
    redirect('');
    return;
  }
  // The form didn't validate (or the user hasn't submitted)
  $this->load->view('yourview');
}
6
ответ дан 1 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

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