サーバーはログイン、パスワード、および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> </label>
<input type="text" name="captcha" value=""/>
</div>
<div class="line">
<label> </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" />
今日、これとまったく同じ質問はありませんでしたか?元の質問が削除されたように見えます。明らかに同じ正確な質問と情報源なので、何が起こったのか不思議です。 – davidethell
誰も返答しませんでした。私はちょうどいくつかのヒントを見つけようとしました。(でも、それでも失敗しました。) – Tedy
CURL(IE、フォームタグでフォームをラップしてターゲットをターゲットにするのではなく、 URL "http://example.com/index.php")? –