2011-11-26 23 views
7

サーバーはログイン、パスワード、およびCAPTCHAを正常に受信します。どのように私はクッキーでそれを行うのですか?私はすべてを紹介しますの助けを必要とされている情報を知らないPOSTとCookieを使用してcURLを使用してログインする方法

ログインフォーム:

<div id="loginForm"> 
<div id="logo"><img src="logo.png" border="0" /></div> 
<div class="loginBar">Login</div> 
    <form action="index.php" method="post"> 
    <input type="hidden" name="p" value="login" /> 
    <div class="line"> 
     <label>Captcha</label> 
     <img src="captcha/securimage_show.php" border="0" /> 
    </div> 
    <div class="line"> 
     <label>&nbsp;</label> 
     <input type="text" name="captcha" value=""/>     
    </div> 
    <div class="line"> 
     <label>&nbsp;</label> 
     <input type="submit" value="Login" /> 
    </div> 
    </form>       
<hr/> 
<a href="index.php?p=register" class="register" title="Click to register">Register</a> 
</div> 

のcURLコード:

extract($_POST); 

    //set POST variables 
    $proxy = '127.0.0.1:8118'; 
    $url = 'http://example.com/index.php'; 
    $fields_string= 'p=login&user=' . $user . '&pass=' . $passwd . '&captcha=' . $_POST['captcha'] . '&submit=Login'; 

     //open connection 
     $ch = curl_init(); 

     //set the url, number of POST vars, POST data 
     curl_setopt($ch,CURLOPT_URL, $url); 
     curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); 
     curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 
     curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch,CURLOPT_PROXY, $proxy); 
     curl_setopt($ch,CURLOPT_COOKIEJAR, "cookie.txt"); 
     curl_setopt($ch,CURLOPT_COOKIEFILE, "cookie.txt"); 
    //curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
     //execute post 
     $result = curl_exec($ch); 

     print_r(curl_error($ch)); 
     print_r(curl_getinfo($ch)); 
     print_r(curl_errno($ch)); 

     //close connection 
     curl_close($ch); 

カールGETINFO:

[url] => http://example.com/index.php 
[content_type] => text/html 
[http_code] => 200 
[header_size] => 415 
[request_size] => 325 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 1.549389 
[namelookup_time] => 3.7E-5 
[connect_time] => 0.000138 
[pretransfer_time] => 0.000142 
[size_upload] => 62 
[size_download] => 1585 
[speed_download] => 1022 
[speed_upload] => 40 
[download_content_length] => 1585 
[upload_content_length] => 0 
[starttransfer_time] => 1.27051 
[redirect_time] => 0 
[certinfo] => Array () 
[redirect_url] => 

リアルクッキー:

Host:     example.com 
Name:     PHPSESSID 
Path:    /
Content:    7qk7bb17nr030g5j59h2gq3nq6 
Content raw:   7qk7bb17nr030g5j59h2gq3nq6 
Expires:    At end of session 
Expires raw:   0 
Send for:    Any type of connection 
Send for raw:   false 
Created:    Fri 25 Nov 2011 10:37:24 PM EET 
Created raw:   1322253443569272 
Last accessed:  Sat 26 Nov 2011 11:06:02 AM EET 
Last accessed raw: 1322298361723991 
HTTP only:   No 
HTTP only raw:  false 
This domain only:  No 
This domain only raw: false 
Policy:    no information available 
Policy raw:   0 
Status:    no information available 
Status raw:   0 
--- 

cookie.txt内のlibcurlによってGerenatedファイル:私はこのコードを実行すると

# Netscape HTTP Cookie File 
# http://curl.haxx.se/rfc/cookie_spec.html 
# This file was generated by libcurl! Edit at your own risk. 

example.com FALSE / FALSE 0 PHPSESSID crs9cm100agdfsujsncr964jg7 

、アカウント、passwdとキャプチャ成功し、サーバによって受信されますが、クッキーとの誤差があります

クッキーは私がその本当のクッキーコンを見ても

を有効にしていることを確認してくださいtent rawはlibcurlで生成されたものとは異なります。

また私は私のフォームから、私は成功したウェブサーバーのクッキーをキャッチすることを見た。

PS!私は、ログインフォームでこのリンクからクッキーを受け取る:

<img src="captcha/securimage_show.php" border="0" /> 
+0

今日、これとまったく同じ質問はありませんでしたか?元の質問が削除されたように見えます。明らかに同じ正確な質問と情報源なので、何が起こったのか不思議です。 – davidethell

+0

誰も返答しませんでした。私はちょうどいくつかのヒントを見つけようとしました。(でも、それでも失敗しました。) – Tedy

+0

CURL(IE、フォームタグでフォームをラップしてターゲットをターゲットにするのではなく、 URL "http://example.com/index.php")? –

答えて

0

それは、カールは「古い」セッションクッキーを無視して、新しいセッションを開始することを余儀なくされます。この方法で不足している属性

curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); 

の原因である可能性があります代わりに。

+0

このパラメータを使用すると、2つの異なるクッキーが表示されます。 1. cookie.txtおよび2. real cookie。 – Tedy

関連する問題