PDA

View Full Version : [PHP] Problema con cURL


IA-64
03-11-2010, 09:55
cia a tutti volevo sottoporvi un problema che mi sta facendo uscire pazzo

mi servirebbe di fare un'autenticazione automatica ad un sito per poi scaricare dei documenti

avevo pensato di raggiungere lo scopo tramite il supporto a cURL di PHP

il codice che ho scrittoè questo:

<?php

$url = 'http://opfor.forumfree.it/?act=Login&CODE=00';
$data = array('UserName' => urlencode("mionomeutente"),
'PassWord' => urlencode("miapassword"),
'submit' => urlencode("Entra nel sito")
);
$useragent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; it; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
//curl_setopt($ch, CURLOPT_ENCODING , "gzip,deflate");
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_FAILONERROR, true);

curl_exec($ch);

//DEBUG MODE
/*
print "<pre>\n";
print_r(curl_getinfo($ch));
print "</pre>\n";
echo "\n\ncURL error number:" .curl_errno($ch); // print error info
echo "\n\ncURL error:" . curl_error($ch);
print "</pre>\n";
*/

curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_URL, 'http://opfor.forumfree.it/');
curl_exec($ch);
curl_close ($ch);

?>

viene eseguito senza nessun tipo di errore ne PHP ne nel cURL
ma la pagina rimane bianca...PERCHE????

il tutto gira su un server aruba con
PHP 5.2.14
cURL abilitato
CURL Info--> libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5

grazie in anticipo a chiunque mi possa essere d'aiuto :D

kk3z
03-11-2010, 10:55
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

vuol dire che devi fare

$response = curl_exec($ch);

e poi fare quel che vuoi con l'html di risposta, per esempio:

echo $response;

IA-64
03-11-2010, 11:44
grazie..ti giuro che ci avro provato mille volte..anche con questo metodo ma non aveva mai funzionato..adesso si bahhh

comunque ora il problema è che mi visualizza la pagina ma non riesco ad effettuare il login..

io ho individuato dal sorgenmte del sito i nomi dei campi del form di inserimento
compreso il tasto di submit..e li ho inseriti nell'array $data... è corretto giusto??