J’aimerais bien automatiser ça, pour ça je peux me contenter de rejouer les requêtes qui sont jouées quand je fais la manip en vrai, n’est-ce pas ?
Grâce à l’extension httpfox j’ai plein de détails sur les requêtes réalisées par le navigateur, je récupère donc leur liste, je fais gaffe à renvoyer le cookie de session qui m’est donné au démarrage mais … ça ne marche pas, à la fin je n’obtiens pas le bon résultat.

Quelles sont les subtilités auxquelles je n’ai pas pensé ? Est-ce que le script côté serveur a un moyen de détecter que je suis en train de réaliser les requêtes avec un script php maison qui s’exécute sur ma machine plutôt qu’à partir de leur interface web et peut me blâmer en conséquence ?
Pour info, l’interface web permettant d’accéder aux emplois du temps est ici
Et voici le script que j’ai écrit (qui contient encore des print_r de débugage).
<?
require_once "HTTP/Request.php";
$referer = null;
$cookie = null;
function setup() {
$GLOBALS['referer'] = "http://plannings.univ-rennes1.fr/ade/standard/gui/interface.jsp?login=sansesame&password=sans2007&projectId=44";
$req = new HTTP_Request($GLOBALS['referer']);
$req->addHeader('Keep-Alive', '300');
$req->addHeader('Connection', 'keep-alive');
$req->addHeader('Host', 'plannings.univ-rennes1.fr');
$rep = $req->sendRequest();
if(PEAR::isError($rep)) {
echo $rep->getMessage();
die();
}
/* Récupération du cookie */
$cookies = $req->getResponseCookies();
$GLOBALS['cookie'] = $cookies[0]; // HACK Pour l’instant le système ne renvoie qu’un cookie, ça pourrait changer…
}
function sendHttpRequest(& $req) {
$req->addHeader('Keep-Alive', '300');
$req->addHeader('Connection', 'keep-alive');
$req->addHeader('Host', 'plannings.univ-rennes1.fr');
$req->addHeader('Referer', $GLOBALS['referer']);
$req->addCookie($GLOBALS['cookie']['name'], $GLOBALS['cookie']['value']);
$rep = $req->sendRequest();
if(PEAR::isError($rep)) {
echo $rep->getMessage();
die();
}
}
/* Initialisation, récupération du cookie */
setup();
/* Sélection de l’emploi du temps */
$req = new HTTP_Request("http://plannings.univ-rennes1.fr/ade/standard/gui/tree.jsp?selectId=17&reset=true&forceLoad=false&scroll=0"); // 17 = GL2.2
sendHttpRequest($req);
print_r($req->getResponseBody());
/* Génération de l’image */
$req = new HTTP_Request("http://plannings.univ-rennes1.fr/ade/custom/modules/plannings/imagemap.jsp?width=802&height=361");
sendHttpRequest($req);
print_r($req->getResponseBody());
die();
$xml = new SimpleXMLElement($req->getResponseBody());
$url_img = $xml->BODY->img['src'];
/* Récupération de l’image */
$req = new HTTP_Request($url_img);
//$req->addCookie($cookie['name'], $cookie['value']);
$rep = $req->sendRequest();
header("Content-type: image/gif");
echo $req->getResponseBody();
?>
L’idée est d’afficher automatiquement juste l’image gif correspondant à mon emploi du temps à moi.