ugrás a tartalomhoz

Php cURL

foszto · 2010. Május. 27. (Cs), 10.23
Szeretnék curl-el bejelentkezni egy oldalra, majd az ott kapott egyik url-en továbbmenni úgy hogy közeben megmaradjon a Session. Íme a kód:

	$url='https://url.url/pl.pl?akarmi';
	
	
	$post = array ('login' => 'user', 'key' => 'pass');
	$post = http_build_query($post);
	
	

	$cookie=dirname(__FILE__) .'/cookie.txt';
	echo $cookie;
	
	$options = array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_CONNECTTIMEOUT => 5 ,
            CURLOPT_MAXREDIRS      => 5,
            CURLOPT_REFERER => $url,
			CURLOPT_FOLLOWLOCATION => TRUE,
			CURLOPT_POST => 1,
			CURLOPT_POSTFIELDS => $post,
			CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",
			CURLOPT_HEADER => FALSE,
			CURLOPT_COOKIEJAR => $cookie,
			//CURLOPT_COOKIE => 'cookie=c',
			CURLOPT_COOKIEFILE => $cookie,
			CURLOPT_SSL_VERIFYPEER => FALSE,
			CURLOPT_SSL_VERIFYHOST => 2			
	);
	$ch = curl_init();
	curl_setopt_array($ch, $options);
	
	$result = curl_exec($ch);
	
	$tmp_url= get_next_url($result);
	$post = get_params($result);
		
	curl_setopt($ch, CURLOPT_URL, $tmp_url);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
	
	$result = curl_exec($ch);
	echo curl_error($ch);
	
	curl_close($ch);
	
	echo $result;
Az eredményekből kiderül, hogy helyesen végigmegy az oldalon, sikeresen bejelentkezik. Mekapja az új url-t de a sessiont nem viszi magával. Valamért a cookie.txt üres marad. Írásjog van az adott állományon (0777) kipróbáltam winserveren és linuxon. De ugyanaz az eredmény, szóval valami hiba a kódba kell, hogy legyen ezek szerint.
Ha valakinek van ötlete...
 
1

Nekem van egy scriptem

szmegma · 2010. Jún. 12. (Szo), 11.20
Nekem ez a kod van bejelenkezni mas oldalakra. Probalad meg hatha tudod alkalmazni.
<?
$username = 'felhasznalonevem';
$password = 'jelszavam';
$cim = 'http://oldal.hu/';
$id = '*****';

$agent = $_SERVER['HTTP_USER_AGENT'];
$adat = "username=". $username ."&password=". $password; //itt a ket valtozot az oldalon hasznalt input mezo name ertekere kell allitani
$ci = curl_init();
curl_setopt ($ci, CURLOPT_URL, $cim . "login.php"); //itt megadod a fajt ami kezeli az $adat-ot
curl_setopt ($ci, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ci, CURLOPT_USERAGENT, $agent);
curl_setopt ($ci, CURLOPT_TIMEOUT, 20);
curl_setopt ($ci, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt ($ci, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ci, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ci, CURLOPT_REFERER, $cim."index.php"); //itt megadhatsz egy referer fajlt
curl_setopt ($ci, CURLOPT_POSTFIELDS, $adat);
curl_setopt ($ci, CURLOPT_POST, 1);
curl_setopt ($ci, CURLOPT_URL, $cim . "valami.php?id=".$id); //ez a celoldalra vezet
$eredmeny = curl_exec ($ci);

curl_close($ci);

echo $eredmeny;
?>