2010-07-09 172 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