【问题标题】:php curl - sending form data to external websitephp curl - 将表单数据发送到外部网站
【发布时间】:2010-07-09 10:56:33
【问题描述】:

我在我的域上设置了一个登录表单(例如:www.example.com/login)。

当用户输入他们的登录信息时,我需要通过外部网站上的登录表单传递这些详细信息,并将用户定向到他们正在登录的应用程序。

所以要将用户步骤添加到此: 1. 用户在 www.example.com/login 输入登录信息 2. 用户可以直接访问 www.external.com/application 上的应用程序,而无需在 www.external.com/login 重新输入登录详细信息

问题是,我不知道该怎么做。我发现了一些对 cURL 的引用,据我所知,这是最好的方法。

对此的任何帮助将不胜感激.. 我是 PHP 新手!另外......外部网站上的应用程序是 ASP.NET(我不确定这是否有任何因素影响它的工作)。

感谢您的帮助,马克。

【问题讨论】:

    标签: php curl


    【解决方案1】:

    根据您的应用程序的工作方式,可以让您在 example.com/login 上的登录表单指向 external.com/application

    所以你的表单标签看起来像这样:

    <form action="external.com/application" method="post">
    

    现在您的 external.com/application 必须设置为接受来自登录表单的数据。提交表单后,浏览器应将自身定向到 external.com/application。

    【讨论】:

    • 感谢乔希。这是我一直在尝试的方法,所以至少看起来我走在正确的道路上。问题是我无法控制外部网站......外部网站的人是否需要设置一些东西以允许在我的网站上输入的登录详细信息通过?
    【解决方案2】:

    这是一种可能的方法:

    • 在 www.example.com/login 上,创建一个自行提交的经典登录表单
    • 在 www.example.com/login 上,当检测到 $_POST 时:

      • 检查凭据是否正确
      • 如果是,请在您的数据库服务器的表中存储一个专用于该用户的哈希(通过哈希他的 id/user/etc...任何您想要的)
      • 重定向到 www.external.com/login?hash=the_generated_hash
    • 在 www.example.com/verifyHash.php:

      • 创建一个简单的 php 文件,该文件在 $_GET 中获取一个哈希值,如果该哈希值存在于您的数据库中,则回显“true”
    • 在 www.external.com/login 上

      • 检查是否在 $_GET 中传递了哈希
      • 如果是,做一个简单的$result = file_get_contents("www.example.com/verifyHash.php?hash=$_GET["hash"]");
      • 如果结果为真,那么您可以假设用户拥有有效的凭据。

    当然,您可以通过在哈希中传递用户 ID 来优化整个事情,在您询问远程验证哈希时实现一些安全性等...

    【讨论】:

    • 对不起,我没有看到你不能控制外部网站...如果他们很聪明,他们肯定已经在他们的登录表单上实现了一些安全层(比如 CSRF 秘密)。 ..这将完全阻止您通过简单的重定向来做您想做的事情。
    • 嗯,你可能是对的。我设法设置它,以便我可以连接到外部 Wordpress 和 Drupal 站点,但是当我尝试连接到 ASP.NET 站点时,我无法连接......
    • 是的,如果你设法让它工作,你的解决方案可能会在没有警告的情况下被打破,只要他们实施一些安全......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多