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;
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
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. –
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