让我们来看看,如果我可以试试这个,因为你似乎对HTML表单的工作原理有点困惑。
首先,你的网站看起来像这样,对吗?
method="post"
action="http://poster.decaptcher.com/"
enctype="multipart/form-data">
有一点需要指出,在我们解释一个HTML表单,就是你必须在网页的
表单。任何应该被用户看到的元素(或者任何你想要出现在浏览器的主查看区域中的元素)都应该在中。如果不这样做,浏览器就会陷入“怪癖模式”,它实际上并不知道你在说什么,并且试图建立它认为你想要的网站是最好的猜测。你要知道,现代浏览器都非常不错的猜测,但你还是应该重新写它:method="post"
action="http://poster.decaptcher.com/"
enctype="multipart/form-data">
至于解释
标签...当你在HTML提交表单,它实际上加载另一个网站。它不会在后台秘密发送数据,它会带您远离正在查看的页面,并将您带到要发送数据的页面。起初这可能听起来很愚蠢。为什么它会把你从正在查看的页面带走,然后将数据发送到另一个网站?如果您想在发送数据后重定向,那么在发送数据之后,您会将它们重定向到那里。这样做的原因是大大简化了HTTP协议。每当你加载任何网站,你发送和HTTP请求。此请求包含信息的对接加载。在这个信息是:
您的IP地址
你使用
你上次访问
你如何访问该页面(点击一个链接或输入网址的页面浏览器是什么地址栏)
您要查看的网页(是index.html或mysite.html?)
与该服务器
任何职位信息的任何cookie(额外的服务器可能会或可能没有要求的形成)
每当服务器收到其中一个请求时,它会查看所有信息并决定要执行的操作。通常,服务器只会查看要查看的页面并将其发送给您。尽管如此,有时您想查看的页面在准备展示之前还需要额外的工作。例如,如果页面以.php结尾,那么它将通过页面搜索<?php ,并且在该点之后的所有内容都将作为脚本执行。只有脚本的输出被发送给请求页面的人,而不是脚本本身。
如果您要将自己的POST信息发送到网站,请等待10分钟,然后进入网站,但无法记住是您之前发送了发布信息或发送了哪些信息。 Web服务器的关注时间很短。因此,如果您发送表单登录网站,然后等待10分钟,然后尝试查看会员的唯一页面 - 它会忘记您已登录。由于这个原因,它会在您提交时向您发送页面表格。它在它还记得你已登录的情况下执行它,然后它有机会忘记。发送给您的页面很可能会包含一个cookie,您可以使用它来提醒您在下次请求页面时登录的服务器。
如果这是有道理的,那么你应该了解当你提交表单时会发生什么。它不仅仅把你的信息提供给服务器。它会将这些信息作为整个请求的一部分发送给服务器,然后服务器将您的网页发送回您的浏览器并显示该网页。实际上只有一种方法可以将数据发送到服务器而不需要之后将您重定向到该服务器。然而,有多种方法可以做到这一点。您必须发送“虚拟请求”,请求具有某些POST数据的网页,但忽略返回的网页。
在你的例子中,你想发送数据到http://poster.decaptcher.com。要做到这一点,不用将用户重定向到http://poster.decaptcher.com,最简单的解决方案就是使用javascript和AJAX。 Javascript有一些功能可以让你在不重新加载页面的情况下发送HTTP请求,然后让javascript决定如何处理返回的页面。
这通常用于当您想重新加载网页的零件而无需重新加载整个事物。例如,如果您有聊天程序,并且想要更新聊天窗口而不刷新整个页面。 javascript会请求一个仅包含新线聊天的网页,减去任何,
或标记。然后它将这些行显示在聊天窗口中。但是,您可以使用AJAX请求一个页面,然后忽略返回的内容而不是将其显示在页面上。通过这样做,您将发送POST数据,但不会重定向用户。
另一个选择是将请求发送到第三个网站,然后它可以发送它自己的虚拟请求。例如,将表单提交给您拥有的PHP页面。然后PHP脚本可以告诉你的服务器发送一个虚拟请求到http://poster.decaptcher.com并忽略响应,然后你可以发送一个包含任何你想要的内容的网页。
既然我已经充分详细地描述了这两个过程,我将它作为练习让读者弄清楚如何做到这些。 =)