进行服务器端验证,然后发布到远程脚本

时间:2009-10-08 20:09:49

标签: php validation curl

我曾经以为我会使用curl,但看起来我错了。我需要做的是捕获帖子并进行一些数据库查找以进行验证,然后将验证的数据发布到远程URL。

我通过填充html表单并使用javascript提交它来完成此操作,但这有明显的缺陷。我想构建一个帖子并发送浏览器,就像他们已经将表单发布到远程URL一样。

我在卷曲文档中遗漏了什么吗?什么是Good™方式?

4 个答案:

答案 0 :(得分:2)

你可以使用curl。

但您可能还有其他问题要考虑。当浏览器实际发布到另一个URL时,会设置Cookie,会话等。从服务器发布时可能不会设置这些。您还应该查看有关SO的屏幕抓取问题。

假设情况并非如此,您应该能够获得帖子,验证字段,并使用curl重新发布。 manymany examples doing this

编辑

  • 将表单发布到您的server.php
  • 处理/验证server.php
  • 中的字段
  • 使用curl将验证的参数发布到remote.service

答案 1 :(得分:2)

我没有尝试过,但是我要做的是将表单提交到最终目的地并添加一个javascript onSubmit()函数,它向服务器发出ajax请求并返回true或false。 / p>

也就是说,如果你可以依赖javascript ......

答案 2 :(得分:2)

请求/响应就像这样:

+---------+   request    +--------+   curl request   +--------+
|         | -----------> |        | ---------------> |        |
| browser |              | url #1 |                  | url #2 |
|         | <----------- |        | <--------------- |        |
+---------+   response   +--------+   curl response  +--------+

坐在浏览器后面的用户将无法知道最终的URL(上面的URL#2)是什么,因为它在HTML源代码中没有任何地方,所以他们不会破解并跳过中间人URL (网址#1)手动。

答案 3 :(得分:1)

我发现发布“wget”往往比CURL更容易管理。

$remoteContent = `wget -o - http://someremoteurl`;

除此之外,马特的反应是正确的。但是,如果您从屏幕抓取的远程站点的响应包含链接,您将不得不搜索并替换它们(如果您想自己处理它们) - 此时您正在创建代理服务器。 ..

-CF