Toon
effectivement cela ressemble à un problème d'identification car il n'y a pas de raison que les fonctions tournent bien pour les uns et pas pour toi.
Guigui591012
même chose mais comme il n'y a pas de message d'erreur cela me paraît normal.
Pour le moment la fonction me retourne le nom des équipes enregistrées mais pas le reste puis qu’aucune feuille n'a encore été saisie sur SPID pour cette phase.
Il faudra attendre qu'une feuille de rencontre soit saisie pour vérifier tout cela donc il y aura du travail à effectuer à partir du 19/09/2015.
2 - tu dis que $buffer = file_get_contents("https://twitter.com" ) fonctionne.
Je remarque que tu as des guillemets autour de l'URL.
Peux-tu faire la même chose avec la chaine de connexion, on ne sait jamais !
Tu devrais donc avoir quelque chose de cette forme où tu as uniquement xxx et yyy à remplacer par tes identifiants
$tm = round(microtime(true)*1000); // timestamp en ms
$tmEntier = sprintf("%.0f", $tm); // pour ne pas avoir de notation scientifique
$tmc = hash_hmac("sha1",$tmEntier,$cle); // timestamp codé
2 - pour tester l'initialisation tu peux essayer ceci
$serie = random_str(15);
$cle = md5(API_MDP);
$tm = round(microtime(true)*1000); // timestamp en ms
$tmEntier = sprintf("%.0f", $tm); // pour ne pas avoir de notation scientifique
$tmc = hash_hmac("sha1",$tmEntier,$cle); // timestamp codé
$chaine = 'http://www.fftt.com/mobile/pxml/xml_initialisation.php?serie='.$serie.'&tm='.$tmEntier.'&tmc='.$tmc.'&id='.API_ID;
echo $chaine;
$result = file_get_contents($chaine);
echo $result;
ne pas oublier les guillemets autour de API_MDP et API_ID
microtime() retourne le timestamp Unix, avec les microsecondes. Cette fonction est uniquement disponible sur les systèmes qui supportent la fonction gettimeofday().
le timestamp
sur la convention il est indiqué:
"Récupérer le timestamp (« tm » dateheuresys() ) au format année(4)+mois(2)+jour(2)+heure(2)+minutes(2)+secondes(2)+millièmes(3) (YYYYMMDDHHMMSSmmm)."
mais ce n'est pas la définition du timestamp que l'on trouve dans la documentation de PHP. Pour le moment je m'en tiens à la définition du timestamp UNIX et cela fonctionne, s'il faut changer, ce sera une simple ligne à modifier.
le n° de série
"Le signataire devra affecter à chaque utilisateur de façon permanente un numéro de série unique en générant une chaine de 15 caractères aléatoires [A..Z][0..9] en appelant xml_initialisation.php"
personnellement je comprends que chaque internaute doit avoir un n° de série unique tout au long de sa session, c'est pour cela que je le mets dans une variable de session que je récupère pour chaque utilisation d'une API. Mais ce n'est peut-être pas le cas !
effectivement pour une division donnée l'identifiant cx_poule n'est pas retourné pour "Autres rencontres" alors qu'il existe bien sur le site de la FFTT !!!
Bonjour
Tant que le responsable de l'organisme concerné n'a pas effectué le paramétrage dans SPID de "Autres rencontres" il est normal qu'il n'y ait pas de retour.
tu avais certainement oublié de mettre les guillemets autour de l'ID et du mot de passe.
un autre exemple (en utilisant les 3 fonctions de l'exemple précédent).
il suffit de changer le n° du club pour avoir le classement de chacune des équipes de ton club
le reste est de la mise en page.
quelle version de php as-tu?
simplexml_load_string est une fonction de PHP 5
pour tester étape par étape
1 -
echo random_str(15);
-> tu dois obtenir une chaine aléatoire de 15 caractères
2 -
tu remplaces API_MDP par 'tonMotDePass' (ne pas oublier les guillemets)
tu remplaces API_ID par 'tonID' (ne pas oublier les guillemets)
donc tu auras &id='.'tonID'.'&'.$var;
puis tu testes
echo initialisationAPI();
-> tu dois avoir 1 en retour
Message modifié
1 fois, dernière modification
Mardi 11 Août 2015 10:17 par
mimi40
function connexionAPI($api, $var = "" ){
$cle = md5(API_MDP);
$tm = round(microtime(true)*1000); // timestamp en ms
$tmEntier = sprintf("%.0f", $tm); // pour ne pas avoir de notation scientifique
$tmc = hash_hmac("sha1",$tmEntier,$cle); // timestamp codé
$serie = $_SESSION["API"];
$chaine = 'http://www.fftt.com/mobile/pxml/'.$api.'.php?serie='.$serie.'&tm='.$tmEntier.'&tmc='.$tmc.'&id='.API_ID.'&'.$var;
return file_get_contents($chaine);
}
// ------------------------------------
if (initialisationAPI() == 1) {
/* joueur */
$result1 = connexionAPI('xml_joueur', 'licence=406614');
$joueurs = simplexml_load_string($result1);
foreach($joueurs as $value)
{
$s = "";
$s .= "licence : $value->licence </br>";
$s .= "nom : $value->nom </br>";
$s .= "prenom : $value->prenom </br>";
$s .= "club : $value->club </br>";
$s .= "n° club : $value->nclub </br>";
$s .= "nationalité : $value->natio </br>";
$s .= "classement global : $value->clglob </br>";
$s .= "points situation mensuelle : $value->point </br>";
$s .= "ancien classement global : $value->aclglob </br>";
$s .= "anciens points : $value->apoint </br>";
$s .= "classement officiel : $value->clast </br>";
$s .= "catégorie d'âge : $value->categ </br>";
$s .= "rang régional : $value->ranreg </br>";
$s .= "rang départemental : $value->rangdep </br>";
$s .= "points officiels : $value->valcla </br>";
$s .= "proposition de classement : $value->clpro </br>";
$s .= "valeur en début de saison : $value->valinit </br>";
echo $s."</br>";
}
} else {
echo "connexion impossible aux API FFTT";
}
----------------------------------------------
ce qui donne en affichage
licence : 406614
nom : NAURY
prenom : Guillaume
club : US POMAREZ
n° club : 03400024
nationalité :
classement global : 32987
points situation mensuelle : 922
ancien classement global : 32965
anciens points : 930.96
classement officiel : 9
catégorie d'âge : M1
rang régional :
rang départemental : 151
points officiels : 922
proposition de classement : 9
valeur en début de saison : 654.
Message modifié
2 fois, dernière modification
Lundi 10 Août 2015 10:35 par
mimi40
Bonjour
Cela fonctionne également pour moi. Guigui591012, as-tu repris le même numéro de série aléatoire que lors de l'authentification. Perso je mets ce numéro de série dans une variable de session lors de l'authentification, variable que je récupère ensuite dans l'utilisation des autres API.