2012-06-29 14 views
7

Aynı etki alanındaki farklı bir sayfadan cURL kullanarak bir PunBB forumuna giriş yapmaya çalışıyorum.cURL cookiejar satırı #HttpOnly_ ile yorum yaptı?

Oturum açarken, cURL gerçekleştirilir ve ilk yanıtı forumun 'başarılı giriş' sayfasıdır. Ancak, bu forumda herhangi bir bağlantıya tıklandığında hiçbir çerez ayarlanmadı ve çıkış yaptım.

Biraz araştırdıktan sonra, cookiejar dosyamdan sonra giriş yapmak için gerekli olan çerezden bahseder. Bu çerezi ve değerini tarayıcımın içine manuel olarak oluşturursam başarıyla giriş yaptım ve her şey yolunda. Yani saklanan çerez değeri doğru.

Tanımlama bilgisi adımda cookie adımı/değeri içeren satır yorumlanır.

ilk soru: Neden? saniye: Bu davranış nasıl önlenir? Burada

# 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 

Ve bukle çağrısı:

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; 

cevap

5

bir satırda #Httponly_ önek bir yorum değil

İşte benim cookiejar bu. Tarayıcı/istemciye söz konusu çerezin httponly one olduğunu bildiren sihirli bir dizedir. curl bunu anlayacaktır ve buna göre ilgilenecektir.

Bunun, ilgili programla ilgili veya ilgili programla ilgili olduğunu görmediğim şeyleri tıklatmayla ilgili kısmı anlamıyorum.

+0

Ah Tamam! Teşekkürler Daniel. Görünüşe göre, hashın anlamını tamamen yanlış yorumlamışım. Tıklama bölümünü anlamadığınız hakkındaki yorumunuz. Eh, çerez cookiejar'da doğru bir şekilde yazılsa bile, tarayıcıda düzenli bir çerez olarak ayarlanmamıştır. Yani, ilk yanıt sayfası bana doğru bir şekilde oturum açtığımı söylüyor ama çerez orada olmadığı için, forumdaki herhangi bir bağlantıyı tıklattığımda (giriş yapmamamı söyleyeceğim) gerçekten acıklı bir şekilde ortaya çıkmayacağım. Bu konuda herhangi bir düşünce var mı? – Amelia

+1

Evet, kıvırıcı müşteridir ve çerezleri alır ve kullanır, tarayıcıya gönderdiği anlamına gelmez, hatta siz sadece programın sonuçlarını izleyen tarayıcıya gönderirsiniz. –

+0

Anladım. Tamam. Bu yüzden doğru kurabiyeleri almak için bir canavara yazdım ve php'yi ayarladım :) Hayat güzeldir. Yardımlarınız için teşekkürler Daniel! – Amelia