如何在填写多部分表单的一个或多个表单(部分)后检查用户是否正在关闭窗口,而不是所有部分。
我必须将从多部分表单的全部/部分收集的数据发送到外部服务器。
一个条件是,我只能将一个完整表单的数据发送到外部服务器一次。
编辑:在2个答案之后我已经编辑了我的问题
答案 0 :(得分:2)
答案 1 :(得分:1)
PHP是一种服务器端语言。您应该使用Javascript的onbeforeunload()进行浏览器端操作。
答案 2 :(得分:1)
这始终是一个复杂的主题,因为HTTP是无状态协议。
Javascript可以是一个,不是那么可靠的解决方案。使用事件或ajax继续发送所有内容是一些可能的解决方案。
从服务器端的角度来看,您只需处理从User-Agent发送的数据和信号。你有a few ways to check connection status with PHP。
简而言之,您可以检查3个信号: - 正常 - 中止 - 超时
正常意味着没有意外发生。 中止信号表示用户在加载时单击了STOP按钮。 如果进程花费的时间过长,则会由服务器触发超时(此信号的可用方式与服务器向用户发送超时的方式相同)。
请注意,如果用户在页面加载后关闭窗口(页面加载,填充一半窗体,关闭窗口),或者如果关闭电源,网页加载后会发生网线或其他任何事情,状态仍为NORMAL。
是的,很糟糕。您无法从服务器端控制用户正在执行的操作。你需要一种从客户端控制它的方法,这里是javascript方便的地方。
我希望在不久的将来能够使用网络套接字和网络工作者来处理这类问题,以及register_tick_function。虽然我们在本主题中没有达到UA的良好支持,但只能使用少量脚本。