2012-04-29 253 views
0

首先,我想澄清一下,我嘗試了很多不同的方法,並閱讀了很多關於此的文章,但沒有一篇完全工作。遠程登錄到Managebac

我已經明白了,我通過cURL成功獲取cookie,但是當我嘗試實際使用它們時,它只是失敗,並說我正在重定向。

點,在這裏我想要得到的,是,我只是想登錄,檢索從我的個人資料數據,然後做的東西吧......

下面是我在哪裏,現在(只是節省了正確的餅乾,但回不回我登錄後頁面):

$url="https://myschool.managebac.com/sessions/"; 

$postdata = "[email protected]&password=password&commit=Sign-in&remember_me=1"; 

$cr = curl_init(); 
curl_setopt($cr, CURLOPT_URL, $url); 
curl_setopt($cr, CURLOPT_POST, TRUE); 
curl_setopt($cr, CURLOPT_HEADER, TRUE); 
curl_setopt($cr, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
curl_setopt($cr, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($cr, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt($cr, CURLOPT_COOKIEJAR, 'cookie.txt'); 
$header = curl_exec($cr); 
curl_close($cr); 

$cr2 = curl_init(); 
curl_setopt($cr2, CURLOPT_URL, 'https://myschool.managebac.com/'); 
curl_setopt($cr2, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
curl_setopt($cr2, CURLOPT_HEADER, TRUE); 
curl_setopt($cr2, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($cr2, CURLOPT_COOKIEFILE, 'cookie.txt'); 
$result = curl_exec($cr2); 
curl_close($cr2); 

我希望有實際上是一個可行的辦法,因爲Managebac是不是使用的應用程序(主要針對IB學生),但如果我能做到這一點,它會幫助我很多。

我很高興爲每一個答案。

+1

就像註釋一樣,您可以使用一組PHP鍵=>值作爲POST數據,並且cURL將處理它。 – DanRedux

+0

是的,我知道,但大部分代碼實際上是從某處複製的,只是改變了一些東西。應用程序工作後,我會更好地組織它。 – Fasand

回答

0

好的,所以我設法做到了。

現在,它得到所需的信息,並做一切正常。

如果有人想代碼,那就是:

$url="https://myschool.managebac.com/sessions"; 
$postdata = "login=mylogin&password=mypassword&commit=Sign-in&remember_me=1"; 

$cr_curlopt = array(CURLOPT_URL => $url, 
        CURLOPT_POST => TRUE, 
        CURLOPT_HEADER => TRUE, 
        CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'], 
        CURLOPT_RETURNTRANSFER => TRUE, 
        CURLOPT_POSTFIELDS => $postdata, 
        CURLOPT_COOKIEJAR => 'cookie.txt'); 

$cr = curl_init(); 
curl_setopt_array($cr, $cr_curlopt); 
$header = curl_exec($cr); 

curl_close($cr); 

$cr2_curlopt = array(CURLOPT_URL => "http://myschool.managebac.com", 
        CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'], 
        CURLOPT_RETURNTRANSFER => TRUE, 
        CURLOPT_COOKIEFILE => 'cookie.txt'); 

$cr2 = curl_init(); 
curl_setopt_array($cr2, $cr2_curlopt); 
$result = curl_exec($cr2); 
curl_close($cr2); 

print $result; 

順便說一句,我不知道它爲什麼會真正幫助,但它開始工作後,我改變了curlopt從單獨的字符串添加到一個數組。 (感謝DanRedux)

+0

這實在不行了。你知道任何解決方法嗎? – FoxInFlame

+0

我最終在Managebac發佈了他們的(體面的但並不完美)的應用程序後放棄了這個想法,而且我已經完成了IB,因此我甚至無法再對它進行測試。但我猜想即使現在它也應該有相當的工作 - 登錄,獲取cookie,存儲它們,使用它們進行訪問。什麼似乎是問題? – Fasand

+1

經過數月的嘗試,我終於設法登錄。 ManageBac重定向到像3個不同的URL,你必須一個接一個地登錄... :)以下是源代碼:https://github.com/FoxInFlame/Unofficial-ManageBacAPI/blob/master/api/0.1/authenticate_base .php – FoxInFlame