Vous êtes ici : Accueil > Forums > Messages de mimi40

Messages de mimi40

Lundi 24 Août 2015 18:47

if (initialisationAPI() == 1) {
$D1 = 4601;
$cx_poule = 15607;
$param = "action=&auto=1&D1=".$D1."&cx_poule=".$cx_poule;
$result1 = connexionAPI('xml_result_equ', $param);
$tours = simplexml_load_string($result1);
foreach($tours as $value)
{
$libelle = $value->libelle;

$arr = explode(" ",$libelle);
$poule = $arr[1];
$tour = $arr[5];
$date = $arr[7];
$tabDate = explode('/', $date);
$date = "20".$tabDate[2].'-'.$tabDate[1].'-'.$tabDate[0];

$equa = $value->equa;
$equb = $value->equb;
$scorea = $value->scorea;
$scoreb = $value->scoreb;
$lien = $value->lien;

$s .= "poule : $poule | tour : $tour | $date </br>";
$s .= "équipe A : $equa | score : $scorea | équipe B : $equb | score : $scoreb </br>";
$result2 = connexionAPI('xml_chp_renc', $lien);
$resultats = simplexml_load_string($result2);
foreach($resultats as $value)
{
$equa = $value->equa;
$equb = $value->equb;
$resa = $value->resa;
$resb = $value->resb;
$s .= "$equa | $equb | $resa | $resb</br>";
}
$s .= "--------------</br>";
$s .= "</br>";
}

} else {
$s .= "Connexion aux API refusée";
}
echo $s;

Lundi 24 Août 2015 11:47

Bonjour

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.

Lundi 24 Août 2015 02:41

Bonjour Toon

1 - quelques modifications puisque j'ai mis mot de passe et ID en constantes dans le site du Comité.

$motDePasse = "xxxx";
$cle = md5($motDePasse );
$monID = "yyy";

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

$serie = random_str(15);
$motDePasse = "xxxx";
$cle = md5($motDePasse );
$monID = "yyyy";

$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=".$monID;
$result = file_get_contents($chaine);
echo $result;
Message modifié 1 fois, dernière modification Lundi 24 Août 2015 02:43 par mimi40

Dimanche 23 Août 2015 18:58

Bonjour Toon
Tu n'es pas le seul à tâtonner et c'est après de multiples essais que j'ai réussi à sortir quelque chose

1 - la fonction random_str() qui donne le n° de série aléatoire a été prise sur ce site.

function random_str($nbr) {
$str = "";
$chaine = "abcdefghijklmnpqrstuvwxyABCDEFGHIJKLMNOPQRSUTVWXYZ0123456789";
$nb_chars = strlen($chaine);

for($i=0; $i<$nbr; $i++) {
$str .= $chaine[ rand(0, ($nb_chars-1)) ];
}

return $str;
}

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 !

Mercredi 19 Août 2015 09:34

crab38 si tu as besoin d'un coup de main, tu demandes

Jeudi 13 Août 2015 15:48

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 !!!

Jeudi 13 Août 2015 14:51

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.

Mardi 11 Août 2015 18:43

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.

// ------------------------------------
if (initialisationAPI() == 1) {
$numeroClub = "03400002";
$s = "";
$param = 'numclu='.$numeroClub.'&type=M';
$result1 = connexionAPI('xml_equipe', $param);
$equipes = simplexml_load_string($result1);
foreach($equipes as $value)
{
$libequipe = $value->libequipe;
$libdivision = $value->libdivision;
$lienPouleDivision = $value->liendivision;
$s .= "$libequipe / $libdivision </br>";
$result2 = connexionAPI('xml_result_equ', 'action=classement&auto=1&'.$lienPouleDivision);
$classements = simplexml_load_string($result2);
foreach($classements as $value)
{
$poule = $value->poule;
$clt = $value->clt;
$equipe = $value->equipe;
$joue = $value->joue;
$pts = $value->pts;
$s .= "$clt $equipe $joue $pts</br>";
}
$s .= "</br>";
}
$s .= "</br>";
echo $s;
} else {
echo "connexion impossible aux API FFTT";
}
Message modifié 3 fois, dernière modification Mardi 11 Août 2015 18:50 par mimi40

Mardi 11 Août 2015 10:04

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

Lundi 10 Août 2015 05:12

pas de problème pour les propriétés d'un licencié
exemple de code

// ---- API FFTT ----------------------
function random_str($nbr) {
$str = "";
$chaine = "abcdefghijklmnpqrstuvwxyABCDEFGHIJKLMNOPQRSUTVWXYZ0123456789";
$nb_chars = strlen($chaine);
for($i=0; $i<$nbr; $i++)
{
$str .= $chaine[ rand(0, ($nb_chars-1)) ];
}
return $str;
}

function initialisationAPI() {
$serie = random_str(15);
$_SESSION["API"] = $serie ;
$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;
$result = file_get_contents($chaine);

$dom = new DomDocument();
$dom->loadXML($result);
$reponse = $dom->getElementsByTagName('appli')->item(0)->nodeValue;
return $reponse;
}

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

Dimanche 09 Août 2015 09:41

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.
10 messages

Vous êtes ici : Accueil > Forums > Messages de mimi40

Résolu