Я создаю одностраничную оплату для нашего клиента. Эта проверка должна содержать все формы для учетных данных, отгрузки и оплаты. Также возможно редактирование ранее введенных значений. Все идет хорошо, за исключением одного.
Моя страница состоит из нескольких частей:
В каждом из них я проверяю, находятся ли относящиеся к данным данные в сеансе, и если это я показываю другое представление. Здесь ничего особенного.
Например:
<?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
браузера». Если я обновляю страницу, она попросит меня снова отправить форму. Когда я это сделаю, ошибка исчезла. Я не могу понять, откуда это происходит. Я проверил журналы сервера, но там нет ничего необычного.
* Примечание: * Та же проблема возникает между этапами отправки и оплаты.
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]
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="">
/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
«Соединение было сброшено»
Иногда может означать сбой 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, если это повлияет