Может ли PHP обнаружить неполную команду xmlhttprequest.send (data)? - PullRequest
1 голос
/ 09 декабря 2011

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

Вот наш код js:

httpReq = new XMLHttpRequest();
httpReq.open("POST", url,false);
httpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
httpReq.send(param);

Есть ли способ обнаружить неполную отправку на стороне PHP, кроме обнаружения пропущенных параметров записи?(Что мы не можем сделать, потому что они динамические.)

2011-02-27 Редактировать:

Например, клиент отправляет что-то вроде:

&obj1_name=Greeting&obj1_type=string&obj1_value=hello&obj1_id=34

Поле obj1_id является обязательным для хранения оставшихся сведений об объекте.Но иногда мы получаем строку вроде:

&obj1_name=Greeting&obj1_type=string

Моя цель состоит в том, чтобы указать разницу между сломанным клиентом (тот, где означал для отправки короткой строки), что нам нужно исправитьи работающий клиент, который был закрыт слишком рано (тот, где означал для отправки длинной строки), и мы можем списать ошибку как неизбежную.

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Вы можете посмотреть на эту функцию: connection_aborted. Этот подход будет работать только если вы установите ignore_user_abort(true). Теперь скрипт продолжит работу, даже если пользователь нажмет кнопку «Прервать». Затем вам нужно проверить функцию connection_aborted и при необходимости отбросить данные.

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

0 голосов
/ 28 мая 2012

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

0 голосов
/ 09 декабря 2011

Я бы так не думал, так как PHP на стороне сервера, а XmlHttpRequests на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...