2011-11-26 22 views
7

El servidor recibe con éxito el inicio de sesión, la contraseña y CAPTCHA. ¿Cómo lo hago con una cookie?Cómo iniciar sesión con cURL con POST y Cookie

no sé qué información se necesita para la ayuda te muestro todo:

Formulario de acceso: Código

<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); 

rizo 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] => 

Galleta real:

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 
--- 

archivo Gerenated por libcurl en cookie.txt:

# 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 

Cuando i ejecutar este código, Cuenta, exitosa y Passwd Captcha es recibida por el servidor, pero tienen errores con la galleta:

Asegúrate de haber habilitado las cookies

También vi esa galleta real Con carpa sin procesar es diferente generado con libcurl.

También vi que desde mi forma de capturar con éxito la cookie del servidor web.

PS !! Recibo cookie de este enlace en forma de entrada:

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

¿No fue exactamente esta misma pregunta hecha hoy? Parece que la pregunta original fue eliminada. Me pregunto qué le pasó porque obviamente es la misma pregunta y fuente. – davidethell

+0

nadie responde ... simplemente traté de encontrar algunos consejos (pero también nosuccess. – Tedy

+0

¿Ha intentado simplemente publicar sus datos en el sitio de destino directamente, en lugar de usar CURL (es decir, envolver su formulario en etiquetas de formulario y convertirlo en el objetivo? URL "http://example.com/index.php")? –

Respuesta

0

podría ser la causa del atributo que falta

curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); 

Este rizo manera se verá obligado a ignorar las cookies de sesión 'viejos' y empezar una nueva sesión en lugar.

+0

con este parámetro también reveice 2 defeferent cookie. 1. en cookie.txt y 2. cookie real. – Tedy

Cuestiones relacionadas