2013-07-16 52 views
0

我一直試圖讓一個小PHP腳本登錄到DOTNETNUKE應用程序幾天,現在沒有用。我已經複製了標題和發佈變量,因爲它們是使用Tamper Data插件發送給Firefox的。使用Curl(或Guzzle)登錄到DOTNETNUKE應用程序

每次我送過來,我得到以下錯誤信息:

error=Your%20session%20has%20expired.%20%20Please%20try%20again

從我可以告訴它是因爲DotNetNuke的cookie不會被傳遞回來,我不知道爲什麼任何幫助將是很大的讚賞。我的GUZZLE代碼如下:

include_once(LIBRARY_PATH . '/guzzle.phar'); 

use Guzzle\Http\Client; 
use Guzzle\Plugin\Cookie\CookiePlugin; 
use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar; 

$cookiePlugin = new CookiePlugin(new ArrayCookieJar()); 

$client = new Client('ASPX URL CODE GOES HERE'); 
$client->addSubscriber($cookiePlugin); 
$client->setUserAgent('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0'); 

$response = $client->get('ASPX URL CODE GOES HERE')->send(); 

$request = $client->post('ASPX URL CODE GOES HERE', array(), array(
    '__EVENTTARGET' => 'dnn$ctr383$LoginPage$SearchPage$dataPanel$ctl01$ctl13$LoginButton', 
    '__EVENTARGUMENT' => '', 
    'dnn$ReturnModuleFocus' => '', 
    'dnn$ModuleFocalPoint' => '', 
    'dnn$ModuleInvokedFromDataSearch' => '', 
    'dnn$ctr383$LoginPage$SearchPage$dataPanel$ctl01$ctl11$userName$mb_userName' => 'USERNAME HERE', 
    'dnn$ctr383$LoginPage$SearchPage$dataPanel$ctl01$ctl12$password$mb_password' => 'PASSWORD HERE', 
    'dnn$ctr383$LoginPage$SearchPage$dataPanel$ConfirmationSaveResponse' => '', 
    'dnn$ctr383$LoginPage$SearchPage$dataPanel$MinMax' => '', 
    'dnn$ctr383$LoginPage$SearchPage$dataPanel$dpPostBack' => '', 
    'ScrollTop' => '', 
    '__dnnVariable' => '', 
    'ScrollX' => '0', 
    'ScrollY' => '0', 
    'iCWindowID' => '2', 
    'iCRequestID' => '1', 
    'iCFieldsChanged' => '0', 
    '__VIEWSTATE' => '' 
)); 

$response = $request->send(); 

echo $response; 

提前致謝!

回答

0

通過查看您的代碼,它似乎是你正在處理一個asp網站。我對ASP並不擅長,但是我正在使用它構建很多網站,而您的問題是__VIEWSTATE參數。

ASP使用此隨機字符串進行某種奇怪的會話處理。您可以通過下載登錄表單頁面並解析出__VIEWSTATE隱藏輸入字段的值來輕鬆解決此問題。

+0

我正在處理ASP網站。然而,它不是__VIEWSTATE多數民衆贊成在它被傳遞的問題作爲一個空白,因爲你可以在我的後面的變量看到上面,我已經嘗試解析它,它似乎總是保持空白。 – Sincore