Bonjour,
J’essaye de faire une fonction qui me permette d’acceder a une URL depuis une page PHP.
Pour acceder a cette page, il est necessaire au prealable de se logguer.
Apparemment, j’arrive a me logguer mais a garder la session d’un appel d’url a l’autre.
Voici le code:
function go_to_url($url, $form_method = 'POST', $data = NULL, $open_session = false, $cookie_file = NULL) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
if ($form_method == 'POST' && $data) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
else {
curl_setopt($curl, CURLOPT_POST, 0);
//GET should be handled here
//add & at the end of the url (check before not already here) and loop on data to add URL parameters
//TODO
}
if ($open_session) {
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
//output cookie file
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file);
}
elseif ($cookie_file) {
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
//input cookie file
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
}
$page = curl_exec($curl);
curl_close($curl);
return $page;
}
function do_update() {
$cookies_file = './tmp/1234_cookiefile.txt';
if (file_exists($cookies_file)) {
unlink($cookies_file);
}
//Open session
$login_data = array('username' => 'AAAAA', 'password' => 'BBBB');
go_to_url('http://www.xxxxx.com/login.php', 'POST', $login_data, true, $cookies_file);
//Get values
$page = go_to_url('http://www.xxxxx.com/pageY.php', NULL, NULL, false, $cookies_file);
//Logout
go_to_url('http://www.xxxxx.com/logout.php', NULL, NULL, false, NULL);
if (file_exists($cookies_file)) {
//unlink($cookies_file);
}
echo "<pre>".$page."</pre>";
}
do_update();
Quand j’affice le contenu de $page, clairement je ne suis pas loggue alors qu’apres le 1er appel, je le suis. Il doit y avoir un probleme avec le cookie de session mais lequel ?
Merci pour votre aide.
Termos
Edité le 22/11/2011 à 16:57