2010-07-09 129 views
0

我有一个登录表单设置在我的域名上(例如:www.example.com/login)。php curl - 将表单数据发送到外部网站

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

所以给用户的步骤添加到该: 1.用户进入上www.example.com/login登录信息 2.用户被引导到并已获得对www.external.com/application应用而无需在www.external.com/login重新输入登录信息

问题是,我不知道如何去做这件事。我发现了一些cURL的参考,从我能收集到的是最好的方法。

任何帮助,这将不胜感激..我是一个PHP新手!另外...在外部网站上的应用程序是ASP.NET(我不知道这是否有任何因素让这个工作)。

谢谢你的帮助,马克。

回答

0

根据您的应用程序是如何工作的,有什么可以工作是对example.com/login点你的登录表单external.com/application

让你的表单标签应该是这样的:

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

现在您的external.com/application必须设置为接受来自登录表单的数据。当表单被提交时,浏览器应该直接指向external.com/application。

+0

感谢您的乔希优化这整个事情。这是我一直在尝试的方法,所以至少看起来我正走在正确的道路上。 问题是,我无法控制外部网站......外部网站的人是否需要设置一些东西,以允许在我的网站上输入的登录信息通过? – 2010-07-09 13:23:28

0

这是一个可行的方法:

  • 在www.example.com/login,做它本身提交
  • 在www.example.com/login经典的登录表单,当$ _ POST检测:

    • 检查的凭据都不错
    • 如果是,存储在表中你DB服务器专用于该用户的哈希(通过散列他的ID /用户/等..什么你愿意)
    • 重定向到www.external.com/login?hash=the_generated_hash
  • 在www.example.com/verifyHash.php:

    • 创建举一个简单的PHP文件如果您对www.external.com/login分贝
  • 存在这个哈希在$ _GET和哈希回声“真正的”

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

当然,你可以通过用户ID沿着你的哈希值,通过实施一些安全当你问remotly verifyHash等..

+0

对不起,我没有看到你不能控制外部网站... 如果他们很聪明,他们肯定会在他们的登录表单上实现一些安全层(如CSRF秘密)......这将完全阻止你从做你想做的事情做简单的重定向。 – bPizzi 2010-07-09 14:06:49

+0

嗯,你可能是对的。我设法设置它,以便我可以连接到一个外部Wordpress和Drupal站点,但是当我尝试连接到ASP.NET站点时,我无法获得连接... – 2010-07-09 14:27:05

+0

是的,如果你想管理为了得到它的工作,只要他们实施一些安全措施,你的解决方案可能会在没有任何警告的情况下被打破。 – bPizzi 2010-07-09 14:44:27