API en PHP

Résolu/Fermé
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 - 25 juil. 2015 à 22:44
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 - 28 juil. 2015 à 02:21
Bonjour,
j'essaie de faire un API en PHP:
je le fait via un file_get_content tout fonctionne mais je ne sais comment traiter ma réponse?
exemple: http://apis.mcdiamondcms.com/api.php?cmd=version&req=version





-----------------------------------------------
Conception web · Développement web · Design graphique par passion.
A voir également:

8 réponses

miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 92
25 juil. 2015 à 23:26
Hello,
tu peux repréciser exactement ce que tu veux savoir ?
0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3
26 juil. 2015 à 00:17
J'obtient un nombre mais j'aimerais le prendre et l'utiliser en PHP.
0
comme ca $result = file_get_content($file) ? sinon je te conseille json pour une api
0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3
26 juil. 2015 à 01:37
exactement! ;)
Si je dois me diriger vers Json, vous avez un lien / conseil pour moi?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
26 juil. 2015 à 01:46
0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
27 juil. 2015 à 00:20
Merci, mais mon problème reste le même...
J'ai du texte qui ressort de mon API j'aimerais qu'il puisse être repris en tant que valeur.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
27 juil. 2015 à 00:28
Suite à nos réponses précédentes... quel code as tu essayé de faire ?
Sans cette indication essentielle... impossible pour nous de savoir où se situe ton problème.....

De plus...en regardant le lien que tu nous as communiqué... il semble que tu n'es pas mis en place l'encodage Json comme on te l'a préconnisé....


0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
27 juil. 2015 à 00:30
PS: Pour poster ton code sur le forum.. merci de le faire en utilisant la COLORATION SYNTAXIQUE
(explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code )
0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
27 juil. 2015 à 01:20
Fait ;)
0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3
Modifié par FlyAwayExpert7 le 27/07/2015 à 01:20
Bonsoir,
Voici mes codes sans Json car je ne sais pas encore très bien comment l'utiliser...

Voici une condition qui utilise l'API:

if(!empty($_POST['code'])){
$adress = $_SERVER['HTTP_HOST'];
$code = $_POST['code'];
     
$rep = DCMSAPIS('licence', "$code", "$adress");
      
if($rep == "ok"){
Notify('<strong>Code échangé!</strong> Votre addon est lié avec ce CMS!', 'success');
}else{
 Notify('<strong>Code erroné/déja utilisé !</strong> rendez-vous sur mcdiamondcms.com/codes.php pour plus d infos!', 'danger');
}
}


Voici la Fonction:

function DCMSAPIS($dcmsapicmd, $dcmsapireq, $dcmsapiidd) {
  $DCMSAPIS = file_get_contents('http://apis.mcdiamondcms.com/api.php?cmd='.$dcmsapicmd.'&req='.$dcmsapireq.'&idd='.$dcmsapiidd);
  settype($DCMSAPIS, "string");
  return($DCMSAPIS);
}


Ma fonction repond correctement ($rep contient la bonne réponse: je l'ai vérifié avec un echo.) mais l'utiliser avec une condition ne fonctionne pas...

Merci de votre aide.

Cordialement


-----------------------------------------------
Conception web · Développement web · Design graphique par passion.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
27 juil. 2015 à 09:00
Du côté de ton API ... tu dois transformer le résultat en JSON.
Pour ce faire tu peux écrire un truc du genre :


 $result=array();

 $result['version'] = $tavariable;


// on retourne la réponse au format json
echo json_encode($result);



Au niveau de ta fonction de récupération :
function DCMSAPIS($dcmsapicmd, $dcmsapireq, $dcmsapiidd) {
  $tmp= file_get_contents('http://apis.mcdiamondcms.com/api.php?cmd='.$dcmsapicmd.'&req='.$dcmsapireq.'&idd='.$dcmsapiidd);

//on récupère le json dans un  ARRAY
$DCMSAPIS = json_decode($tmp,true);

  return($DCMSAPIS);
}



Ensuite...ça se traite comme n'importe quel Array.

Par exemple.. pour afficher le contenu....
$rep = DCMSAPIS('licence', "$code", "$adress");
      
 //le temps des tests
 $print_r($rep);

 if($rep['version'] == '0.5.3' ){
   echo " c'est la bonne version !";
 }



0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3
27 juil. 2015 à 22:04
Merci,
Je l'ai fait et mon print ne m'affiche rien même si j'enlève le $.
Que faire?

Cordialement
0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3
27 juil. 2015 à 22:27
et si je utilise REST ?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 27/07/2015 à 23:51
Tu peux essayer comme ça ?
(sans les quotes... je n'avais pas vu que tu en avais mis ! )
$rep = DCMSAPIS('licence', $code, $adress);
      
//le temps des tests
echo "<br>code :".$code;
echo "<br>adress:".$adress;
print_r($rep);


Et on est bien d'accord que tu as changé le code du côté de ton API pour transformer en JSON ??
(car là... je viens de tester ton URL .. et c'est toujours du texte qui apparait ! )






Cordialement,
Jordane
0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3
28 juil. 2015 à 00:26
Je travaillais sur une autre partie désolé http://apis.mcdiamondcms.com/api.php?cmd=licence&req=STORE-54ds-F5Li-864R&idd=look
0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3 > FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016
28 juil. 2015 à 00:29
J'ai appliqué Json sur tout mon API !
0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3
28 juil. 2015 à 00:45
<?php					
if(!empty($_POST['code'])){
$adress = $_SERVER['HTTP_HOST'];
$code = $_POST['code'];
$rep = DCMSAPIS('licence', $code, $adress); //Agit sur mon API correctement (Modif BDD)
if($rep['api'] == "ok"){
$addonname = DCMSAPIS('licence', "$code", 'look'); 
$print_r($addonname);						 //file_get_contents('http://apis.mcdiamondcms.com/Store/Manifest/Manifest-'.addonname.'.php');
Notify('<strong>Code échangé!</strong> Votre addon ($addonname) $fr_content_tab_name est lié avec ce CMS!', 'success');
}else{
print_r($rep);
Notify('<strong>Code erroné/déja utilisé !</strong> rendez-vous sur mcdiamondcms.com/codes.php pour plus d infos!', 'danger');
}
}
?>

Les variables $code et $adress fonctionnent...
Le problème est de traiter la réponse uniquement envoyer des requêtes fonctionne essayez (Système de licence ce lien affichera qu'une seul fois "ok" après "invalid" car le code sera utilisé.) http://apis.mcdiamondcms.com/api.php?cmd=licence&req=STORE-54ds-F5Li-864R&idd=CCM
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
28 juil. 2015 à 01:13
Dis voir .....
Dans ton résultat (de ton api ) ... tu ne retournes bien QUE l'encode json de ton array ???
Tu n'y mets rien d'autre ??????

En fait si.... je pense que tu fais un
echo '<meta charset="UTF-8">';

... et c'est ça qui fou la pagaille !!!!

Dans le code de retour de ton api.. il ne doit y avoir qu' UN SEUL ECHO (celui du résultat transformé en JSON ) ..RIEN D'AUTRE !

0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 28/07/2015 à 01:14
Et au passage .. au lieu de faire des IF ELSE pour traiter le résultat.. penses au SWITCH

$rep = DCMSAPIS('licence', $code, $adress); //Agit sur mon API correctement (Modif BDD)
$api = !empty($rep['api'])?$rep['api']:NULL;
switch($api){

 case "ok":
  echo "<br> API = ok";
  $addonname = DCMSAPIS('licence', $code, 'look'); 
  print_r($addonname);       //file_get_contents('http://apis.mcdiamondcms.com/Store/Manifest/Manifest-'.addonname.'.php');
  echo '<strong>Code échangé!</strong> Votre addon ($addonname) $fr_content_tab_name est lié avec ce CMS!';
  break;
 
 case "invalid":
  echo "<br> API = invalid";
  echo '<br><strong>Code erroné/déja utilisé !</strong> rendez-vous sur mcdiamondcms.com/codes.php pour plus d infos!';
  break;

 default:
  echo "<br> REP = ";
  print_r($rep);
  break; 
}

0
FlyAwayExpert7 Messages postés 69 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 3
28 juil. 2015 à 02:21
Merci Jordan!
c'était symplement le "<meta charset="UTF-8">" ...
;-)

tout fonctionne.
0