PHP能检测到不完整的xmlhttprequest.send(data)命令吗?

Can PHP detect an incomplete xmlhttprequest.send(data) command?

本文关键字:data send 命令 xmlhttprequest 检测 PHP      更新时间:2023-09-26

我看到了由帖子数据截断引起的错误日志。在调试之后,我的猜测是问题是我们使用xmlhttprequest来执行post,而用户在发送完整的post数据之前关闭了浏览器。

下面是我们的js代码:

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

是否有一种方法来检测一个不完整的发送在PHP方面,而不是发现有缺失的post参数?(我们不能这样做,因为它们是动态的。)

2011-02-27编辑:

作为一个例子,客户端发送如下内容:

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

obj1_id是一个必需的字段,以便存储关于对象的剩余详细信息。但有时我们会收到一个字符串,如:

&obj1_name=Greeting&obj1_type=string

我的目标是告诉我们需要修复的故障客户端(其中意味着发送短字符串)和过早关闭的工作客户端(其中意味着发送长字符串)之间的区别,并且我们可以将错误作为不可避免的。

您可以看一下这个函数:connection_aborted。此方法仅在设置ignore_user_abort(true)时有效。现在,即使用户点击了中止按钮,脚本也将继续运行。然后,您必须检查connection_aborted函数,并在必要时丢弃数据。

另一种方法是在脚本末尾保存某种标志,将数据标记为已完成处理。如果未设置该标志,则可以丢弃该数据。

我不这么认为,因为PHP是服务器端和xmlhttprequest是客户端。

我已经意识到我们只需要从客户端获得更多信息才能做到这一点。为此,我们在客户端添加了一个已知的终止值。如果服务器看到最后一个参数时没有设置,则表示提交不完整。