API en PHP

Résolu
FlyAwayExpert7 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
FlyAwayExpert7 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   92
 
Hello,
tu peux repréciser exactement ce que tu veux savoir ?
0
FlyAwayExpert7 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   3
 
J'obtient un nombre mais j'aimerais le prendre et l'utiliser en PHP.
0
miii
 
comme ca $result = file_get_content($file) ? sinon je te conseille json pour une api
0
FlyAwayExpert7 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   3
 
exactement! ;)
Si je dois me diriger vers Json, vous avez un lien / conseil pour moi?
0
jordane45 Messages postés 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 751
 
0
FlyAwayExpert7 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   3 > jordane45 Messages postés 38484 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 751
 
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 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 751
 
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 70 Date d'inscription   Statut Membre Dernière intervention   3 > jordane45 Messages postés 38484 Date d'inscription   Statut Modérateur Dernière intervention  
 
Fait ;)
0
FlyAwayExpert7 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   3
 
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 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 751
 
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 70 Date d'inscription   Statut Membre Dernière intervention   3
 
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 70 Date d'inscription   Statut Membre Dernière intervention   3
 
et si je utilise REST ?
0
jordane45 Messages postés 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 751
 
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 70 Date d'inscription   Statut Membre Dernière intervention   3
 
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 70 Date d'inscription   Statut Membre Dernière intervention   3 > FlyAwayExpert7 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai appliqué Json sur tout mon API !
0
FlyAwayExpert7 Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   3
 
<?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 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 751
 
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 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 751
 
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 70 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci Jordan!
c'était symplement le "<meta charset="UTF-8">" ...
;-)

tout fonctionne.
0