2012-03-08 100 views
0

我不能用這個腳本登錄:捲曲登錄問題

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "http://mysite.com/admin/index.php"); 

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'action=login_user.php&AU_USRNAME=myname&AU_PWD=secret'); 

$result = curl_exec($ch); 
curl_close($ch); 

,但我不能登錄。任何想法有什麼不對?

這就是表單代碼:

<form name="loginForm" action="login_user.php" method="POST" enctype="multipart/form-data"> 
     <table> 
     <tr> 
      <td class="label">username</td> 
      <td class="input"><input type="text" name="AU_USRNAME" value="" size="20" /></td> 
     </tr> 
     <tr> 
      <td class="label">password</td> 
      <td class="input"><input type="password" name="AU_PWD" value="" size="20" /></td> 
     </tr> 
    </table> 
    <div id="buttonGroup"> 

      <input type="submit" class="buttonWide" value="login" name="auth_do_login" /> 
    </div> 
</form> 

你看到什麼了?

+1

不應該請求http://mysite.com/admin/login_user.php? – Petter 2012-03-08 10:15:59

+0

您的意思是在這之後的連續請求中未被授權嗎?你應該爲你的curl請求添加一個cookie – ChrisR 2012-03-08 10:20:26

+0

請粘貼表單的來源。你確定沒有CSRF安全輸入BTW? – jpic 2012-03-08 10:22:53

回答

0

我覺得你的使用身份驗證Cookie,所以餅乾應存儲的認證後,可以使用下面的代碼,將存儲cookie並在將來的請求轉發,讓你繼續登錄..

<?php 

    $curl_handle=curl_init(); 
    curl_setopt($curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1"); 
    curl_setopt($curl_handle,CURLOPT_URL,'http://mysite.com/admin/index.php'); 
    curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2); 
    curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($curl_handle,CURLOPT_COOKIEFILE,dirname(__FILE__).DIRECTORY_SEPARATOR."cookie.log"); 
    curl_setopt($curl_handle,CURLOPT_COOKIEJAR,dirname(__FILE__).DIRECTORY_SEPARATOR."cookie.log"); 
    curl_setopt($curl_handle,CURLOPT_REFERER,'http://www.google.co.in'); 
    curl_setopt($curl_handle,CURLOPT_POST,true); 
    curl_setopt($curl_handle,CURLOPT_POSTFIELDS,"action=login_user.php&AU_USRNAME=myname&AU_PWD=secret"); 
    curl_setopt($curl_handle,CURLOPT_FRESH_CONNECT,true);//No caching 
    curl_setopt($curl_handle,CURLOPT_FOLLOWLOCATION,true); 
    curl_setopt($curl_handle,CURLOPT_MAXREDIRS,1); 
    $buffer=curl_exec($curl_handle); 
    echo $buffer; 

?> 
+0

不!不工作,相同的結果! – user1254065 2012-03-08 11:01:12