Dostlar curl hakkında ufak bir sorum olacak.
Login olmadan konuları okuyamadığımız bir forum var. CURL kullanarak bir bot yazdım ve bot login olup konuları getiriyor.
Öncelikle kategorileri getiriyor bot. Ancak kategorilerin içindeki konuları getirmek için, her kategori seçişimde, tekrar tekrar login olup cookie oluşturuyorum.
Acaba bu mantık doğru mu yoksa her seferinde login olmadan da bu işlemi yapabilir miyim ?
CURL Mantığı Hakkında Ufak Bir Soru !?
11
●1.273
- 16-09-2010, 01:41:22
- 16-09-2010, 01:52:48curl_init -> curl sessionını açar.
curl_close -> curl session ını kapatır. dolayısıyla, clurl_close dediğiniz andan itibaren, veya yeni bir curl_init kullandığınız andan itibaren, üyelik girişiniz son bulacaktır. Yani curl close kullanılmazsa istenilen sayfa sorunsuz çalışır. Yani her sayfaya başkınından önce üstteki kodları yazıp, altına yeni bir curl_init yazmadan aynı curl sessionı üzerinden devam edebilrisiniz. - 16-09-2010, 02:04:30curl_init ile açtım session ve kapatmadım diyelim. file_get_contents($url); zaten çalışmıyor. peki ben nasıl çağıracağım sayfayı ?
- 16-09-2010, 02:16:42senin yazdığın curl ile aynı.
$forum=curl_setopt($ch, CURLOPT_URL,'http://www.sehrimetal.com/Smf/forumlinki.php');
curl_exec($ch);
burası böyle;
$forum=curl_setopt($ch, CURLOPT_URL,$URL);
curl_exec($ch);
$URL diye bi değişken var. Her seferinde yeni bir url gönderiyorum. Ana sayfa için, kategoriler için, konular için... 1 kere session açıp her seferinde kullanamaz mıyım ? - 16-09-2010, 02:18:34Elbette kullanabilirsin, onu anlatmaya çalışıyorum zaten.Prostavaryo adlı üyeden alıntı: mesajı görüntüle
- 16-09-2010, 02:24:08function baglan($url)
{
$postdata = "username=*****g&password=*****&autologin=on&redir ect=&login=Log+in";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://www.***/login.php");
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); // 0 olursa sonucu ekrana bastirir
curl_setopt ($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt ($ch, CURLOPT_REFERER, "http://www.google.com");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_exec ($ch);
curl_setopt ($ch, CURLOPT_URL, $url);
$result = curl_exec ($ch);
//curl_close($ch);
return $result;
}
kullandığım curl bu.
$site = baglan($_POST['cat']); //session açıyorum kategori içindeki konuları alabilmek için
$site = stristr($site, "<span class=\"genmed\"><b>Topics</b></span>");
preg_match_all('#<td class="row1" width="100%"><span class="topictitle"></span><a href="(.*?)" class="topictitle">(.*?)</a>#si',$site,$postlist);
for($i=0;$i<count($postlist[0]);$i++)
{
echo baglan($postlist[1][$i]); //tekrar session açıyorum konunun içeriğini alabilmek için
}
şimdi ne yapmam gerektiğini söyleyebilir misin ?