2012-06-29 11 views
7

Sto provando ad accedere ad un forum PunBB da una pagina diversa sullo stesso dominio usando cURL.riga cookiejar cURL commentata con #HttpOnly_?

Al momento del login, cURL viene eseguito e la sua risposta iniziale è la pagina 'login riuscito' del forum. Tuttavia nessun cookie è stato impostato così quando si fa clic su un collegamento in quel forum, e io sono disconnesso.

Dopo un po 'di ricerche sul mio file cookiejar, viene menzionato il cookie necessario per accedere. Se creo questo cookie e il suo valore manualmente nel mio browser, sono riuscito ad accedere e tutto va bene. Quindi il valore del cookie memorizzato è corretto.

La riga che contiene il mio nome/valore del cookie nel cookiejar è tuttavia commentata.

prima domanda: perché? secondo: Come impedire questo comportamento?

Ecco la mia Cookiejar:

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

www.example.com FALSE / FALSE 0 PHPSESSID 3d7oe6vt3blv3vs3ea94nljcs7 
#HttpOnly_www.example.com FALSE / FALSE 1340974408 forum_cookie_e19209 MnwyYWQ4OGViNDI2NjE5MWEwMGZiNGZkNDFmZDY5ZDZhYjM5OTA5NDVjfDEzNDA5NzQ0MDh8OTU0NTExOGZhNWNlNGY5OGMzZDk3MmE0NDlmMWRjNzM3ZjI1NzMxOA%3D%3D 

Ed ecco la mia chiamata ricciolo:

function forumLogin() { 
    $loginFields = array('req_username' => $_REQUEST['username'] 
         ,'req_password' => $_REQUEST['password'] 
         ,'form_sent' => "1" 
        ); //and so on 
    $login = getUrl('http://www.example.com/manager/forum/login.php', 'post', $loginFields); 
    return $login; 
} 

function getUrl($url, $method='', $vars='') 
{ 
    $ch = curl_init(); 
    if ($method == 'post') { 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); 
    } 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); 
    $buffer = curl_exec($ch); 
    curl_close($ch); 
    return $buffer; 
} 

// successful login so reset fail count and update key values 
if(isset($_SESSION['mgrValidated'])) { 
    $sql = "update $dbase.`".$table_prefix."user_attributes` SET failedlogincount=0, logincount=logincount+1, lastlogin=thislogin, thislogin=".time().", sessionid='$currentsessionid' where internalKey=$internalKey"; 
    $rs = mysql_query($sql); 
    var_dump(forumLogin()); 
} 
exit; 

risposta

5

Il prefisso #Httponly_ su una linea non è un commento. È una stringa magica per dire al browser/client che il cookie in questione è uno httponly. arricciatura capirà che e affrontarlo di conseguenza.

Non capisco la parte su come fare clic sulle cose perché non vedo come ciò sia correlato o rilevante al programma che usa curl.

+0

Ah, va bene! Grazie Daniele. Sembra che abbia interpretato in modo errato il significato dell'hash. Il tuo commento su non capire la parte dei clic. Bene, anche se il cookie viene scritto correttamente nel cookiejar, non è impostato come un normale cookie nel browser. Quindi, la pagina di risposta iniziale mi dice che sono loggato correttamente ma dal momento che il cookie non è lì, non sono davvero quello che diventa dolorosamente ovvio quando clicco qualsiasi link nel forum (mi dirà che non sono loggato). Qualche idea su quello? – Amelia

+1

Sì, arricciare è il cliente e ottiene e utilizza i cookie, non significa che lo invia al browser o anche che lo si può inviare al browser che sta solo guardando i risultati del programma di arricciatura. –

+0

Vedo. Bene. Quindi ho scritto una piccola canzoncina per prendere il biscotto corretto e ho impostato php :) La vita è buona. Grazie per il tuo aiuto Daniel! – Amelia