Cet article présente principalement l'introduction de curl demandant d'autres interfaces dans l'interface PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
Aujourd'hui, j'ai rencontré un. besoin d'écrire Les exigences pour curl sont les suivantes :
Le système A (système d'achat) et le système B (système de réponse aux questions) de la même application sont indépendants l'un de l'autre. Toutes les données utilisateur existent dans la base de données du système. A.
Nous sommes maintenant dans une opération dans le système B. Nous devons vérifier dans le système B si la personne qui demande actuellement est membre de cette application Pour vérifier si elle est membre
. de cette application, bien sûr, nous devons obtenir le logo de l'utilisateur actuel. Comparez le logo à la base de données, mais la base de données est dans le système A. À ce moment-là, j'ai pensé à curl et j'ai dessiné une image :
En fait, pour parler franchement, il s'agit de simuler une requête http, car contrairement au front-end, qui peut directement lancer des requêtes http via ajax ou d'autres méthodes, le back-end doit utiliser curl pour.
simuler ce genre de requête afin d'obtenir le même effet que le front end.
Baidu a donc recherché une méthode PHP curl et l'a encapsulée :
public static function curl_post($url,$array){ $curl = curl_init(); //设置提交的url curl_setopt($curl, CURLOPT_URL, $url); //设置post方式提交 curl_setopt($curl, CURLOPT_POST, 1); //设置post数据 curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($array)); //执行命令 $data = curl_exec($curl); //关闭URL请求 curl_close($curl); //获得数据并返回 return $data; }
Puis j'ai appelé avec plaisir :
$array = array('open_id'=>$openid); $url = dr_var("verify"); $res = $this->curl_post($url,$array);
Voici une interface de vérification qui simule la demande du système A dans l'interface du système B pour vérifier l'identité de l'utilisateur, puis décider du système B en fonction des résultats de l'examen
Qu'est-ce que l'interface renvoie au monde extérieur.
Quand j'ai finalement exécuté l'interface du système B, j'ai découvert qu'en plus de la valeur de retour de l'interface du système B, elle était également mélangée avec la valeur de retour de l'interface du système A (vérifier).
C'était très déroutant pendant un moment. J'ai regardé autour de moi pour voir ce qui n'allait pas avec la valeur de retour de l'interface de vérification exit(json_encode(array("a"=>a))) . Cela ne fonctionne pas, donc je l'ai remplacé par return array("a" =>a); Cela n'a toujours pas fonctionné, alors je l'ai changé en var_dump(array("a"=>a)) ; et ça n'a toujours pas fonctionné ! ! ! Renvoie toujours les valeurs de retour des deux interfaces. Plus tard, lorsque j'ai débogué la fonction curl encapsulée phrase par phrase, j'ai découvert que la valeur de l'interface de vérification était imprimée directement dans la lettre rouge ci-dessus, Donc le mot-clé Baidu : curl n'est pas direct Sortie ; bla, bla, bla, un tas d'informations connexes sont sorties. J'en ai ouvert une au hasard et j'ai trouvé la réponse. Il s'est avéré que curl master a défini un paramètre :<🎜. >
//获取数据不直接输出curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
En fin de compte, le problème a été résolu, et il peut être considéré comme un petit point de connaissance sur le réglage des paramètres curl de PHP~~~
Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun, et plus encore. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
Comment vérifier la légalité de l'IP en PHPComment implémenter l'héritage multiple simulé en PHPCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!