2013-05-28 2 views
2

В форме HTML пользователи заполняют регистрационные данные, а затем отправляют их на страницу PHP для обработки данных POST. Примерно в 20% случаев, когда пользователь нажимает «Отправить», данные POST пусты. Некоторые исследования с помощью Fiddler показывает это, когда он работает правильно:форму отправить несколько запросов на загрузку одной и той же страницы

58 200 HTTP www.awebsite.com /?page_id=337 22,433 no-cache, must-revalidate, max-age=0; Expires: Wed, 11 Jan 1984 05:00:00 GMT text/html; charset=UTF-8 firefox:9116      

Когда он ломается, я вижу это:

56 200 HTTP www.awebsite.com /?page_id=337 144 no-store, no-cache, must-revalidate, post-check=0, pre-check=0; Expires: Sat, 6 May 1995 12:00:00 GMT  firefox:9116    
57 200 HTTP www.awebsite.com /?page_id=337 144 no-store, no-cache, must-revalidate, post-check=0, pre-check=0; Expires: Sat, 6 May 1995 12:00:00 GMT  firefox:9116    
58 302 HTTP www.awebsite.com /?page_id=337 16,561 no-cache, must-revalidate, max-age=0; Expires: Wed, 11 Jan 1984 05:00:00 GMT text/html; charset=UTF-8 firefox:9116    
59 200 HTTP www.awebsite.com /?page_id=445 19,989 no-cache, must-revalidate, max-age=0; Expires: Wed, 11 Jan 1984 05:00:00 GMT text/html; charset=UTF-8 firefox:9116  

Это как представить в представлении страницы три раза. BTW, HTML и PHP-страницы являются частью веб-сайта WordPress ... не уверены, что это связано, но хотелось бы включить как можно больше информации.

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

Редактировать в ответ на комментарии: Сначала спасибо FDinoff за то, что вы делаете форматирование ... Я изучаю, как я иду, надеюсь, это работает. 8 ^)

Для:

@ 3dgoo: Я был достаточно осторожен, чтобы нажать отправить только один раз, так что я не думаю, что это проблема. Хотелось бы!

@jereon: Это прерывисто, что такое PITA, но я могу заставить его произойти, отправив страницу четыре или пять раз ... это произойдет.

@Eduardo: да, это в значительной степени то, что я делаю, как вы увидите в моем ответе @meewoK.

@meewoK: Ваше желание - моя команда сэр! Вот форма тега в моем HTML:

<form class="contact_form" action="/?page_id=337" method="post" name="contact_form" onsubmit="return validateForm();"> 

предполагающего validateForm() возвращает истину, данные POST отправляются на страницу WordPress, который построен с использованием PHP. Это page_id=337. Вот топ 20 строк или около этого файла:

<?php 
/* 
Template Name: DisplaySummaryToApplicant.php 
*/ 
?> 

<?php 
$ipaddress = $_SERVER["REMOTE_ADDR"]; 
if (count($_POST) == 0) { 
    header("location: http://www.awebsite.com/?page_id=445"); 
} 
require('wp-load.php'); 
get_header("header_reg"); 
//echo '<meta http-equiv="expires" content="0">'; 
require_once (dirname(__FILE__)."/dbLog.php"); 

global $current_user; 
get_currentuserinfo(); 

Если код не удается, $_POST массив пуст, и пользователь перенаправляется на страницу annuciating ошибки. Это линия page_id=445.

Спасибо всем, ваши идеи и предложения помогут мне подумать по правильной линии.

+1

Возможно ли нажатие кнопки отправки несколько раз? – 3dgoo

+0

У вас есть проблемы с воспроизведением? Термин «event bubbling» предполагает представление ajax/javascript, есть ли у вас проверка как на стороне клиента, так и на стороне сервера? – jeroen

+0

Возможно, вы делаете что-то вроде этого: '' –

ответ

0

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

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

Смежные вопросы