POST / Redirect выбрасывает ошибку браузера «Соединение было сброшено»

Я создаю одностраничную оплату для нашего клиента. Эта проверка должна содержать все формы для учетных данных, отгрузки и оплаты. Также возможно редактирование ранее введенных значений. Все идет хорошо, за исключением одного.

Моя страница состоит из нескольких частей:

  • полномочия
  • отгрузка
  • оплата

В каждом из них я проверяю, находятся ли относящиеся к данным данные в сеансе, и если это я показываю другое представление. Здесь ничего особенного.

Например:

<?php if (is_array($_SESSION['credentials'])) { ... show filled in values ... } else { ... show form ... } ?> 

Когда значения уже установлены, я также показываю кнопку редактирования. Я делаю это следующим образом:

 <div class="left-column"> <h1 class="title-left">Step 1 - Credentials</h1> <div class="pull-left" style="width: 50%;"> Name: name<br /> Address: Address 11<br /> Postal Code: 12345AA<br /> Country: Country<br /> </div> <br /> <div style="clear: both;height: 10px;"></div> <center> <form method="POST" action="/checkout/credentials/"> <input type="hidden" name="edit" value="credentials"> <button class="sexybutton sexysimple sexybestel">Edit</button> </form> </center> </div> 

С последующим:

 <div class="left-column"> <h1 class="title-left">Step 2 - Shipment</h1> <i>Select a shipment method</i> <form method="POST" action="/checkout/payment/"> <input type="radio" value="0" name="shipmentmethod"> Collect<br /> <input type="radio" value="1" name="shipmentmethod"> Deliver<br /> <input type="submit" value="Go to Step 3" class="sexybutton sexysimple sexybestel pull-right" name="shipment"> </form> </div> 

В учетных данных включить я проверяю $_POST['edit'] . Если он установлен, я снова покажу форму с ранее заполненными данными клиента в полях ввода.

Проблема

Всякий раз, когда я нажимаю кнопку «Изменить» в первый раз, это бросает мне Connection was reset браузера». Если я обновляю страницу, она попросит меня снова отправить форму. Когда я это сделаю, ошибка исчезла. Я не могу понять, откуда это происходит. Я проверил журналы сервера, но там нет ничего необычного.

* Примечание: * Та же проблема возникает между этапами отправки и оплаты.

Соответствующий htaccess

 Options +FollowSymLinks RewriteEngine On RewriteBase / order allow,deny allow from all RewriteCond %{HTTP_HOST} ^tapijttegelhandel\.nl RewriteRule ^(.*)$ http://www.tapijttegelhandel.nl/$1 [R=permanent,L] AddDefaultCharset utf-8 RewriteRule ^checkout/ /index.php?mod=checkout&action=show [NC,L,QSA] 

index.php

 case 'checkout': $action = isset($_GET['action']) ? $_GET['action'] : ''; switch ($action) { case 'completed': # ... break; case 'cancelled': # ... break; case 'credentials': case 'shipment': case 'payment': case 'edit': default: include $_SERVER['DOCUMENT_ROOT'].'checkout/show.php'; break; } break; 

Прогресс

  • Я сбросил переменную сеанса, чтобы увидеть, было ли что-то странное в сеансе. (Ничего странного здесь)
  • Я установил плагин Tamper Data для Firefox, чтобы проверить данные POST . (Здесь ничего странного)

Обновить

Я нашел что-то в своем коде, который я пропустил, проверяя все в прошлый раз. Это могло бы иметь какое-то отношение к моей проблеме.

 <script type="text/javascript"> window.history.forward(); function noBack() { window.history.forward(); } </script> </head> <body onload="noBack();" onpageshow="if (event.persisted) noBack();" onunload=""> 

Workflow

 /cart GET 200 OK /checkout/credentials/ GET 304 OK /checkout/credentials/ POST 304 OK # edit /checkout/credentials/ POST - Error 'Connection was reset' # Refresh /checkout/credentials/ POST 200 OK 

Related of "POST / Redirect выбрасывает ошибку браузера «Соединение было сброшено»"

«Соединение было сброшено»

Иногда может означать сбой php. Не видя точных файлов, трудно догадаться, если и почему это происходит.

Обязательно проверьте error_log, введите: php -info | grep, чтобы увидеть, к какому файлу он записывается (если вы используете linux / unix).

Мое предположение – бродячий перерыв; оператор где-то видит этот ответ для возможной причины: https://stackoverflow.com/a/20036720/988324

Однако в ваших журналах ошибок вы найдете некоторые следы этого. Если вы можете это предоставить, я могу помочь больше.

is action="/checkout/payment/" определенно ?, я имею в виду, что вы можете попробовать abosolute url, я вижу подозрительную косую черту в конце / , также вы определяете методы формы с method="POST" , на index.php вы должны получить все с $_POST[] dunno, если это повлияет