Dans le but de se connecter à une API, d'authentifier un utilisateur et d'accéder aux détails de l'utilisateur, l'utilisateur rencontre des problèmes de session lorsqu'il utilise Curl pour s'authentifier et afficher les détails de l'utilisateur. La connexion fonctionne correctement, mais l'affichage des détails de l'utilisateur entraîne une erreur 401 non autorisée, ce qui suggère que Curl n'est pas en mesure de conserver efficacement les cookies de session.
Le problème réside dans l'absence de CURLOPT_COOKIEFILE option, qui est vitale pour que Curl puisse transmettre les cookies enregistrés dans les requêtes ultérieures.
Le manuel définit cette option comme :
"Le nom du fichier contenant les données du cookie. Le fichier cookie peut être au format Netscape, ou simplement des en-têtes de style HTTP déposés dans un fichier. Si le nom est une chaîne vide, pas de cookies sont chargés, mais la gestion des cookies est toujours activée."
Dans le code fourni, le pot à cookies est utilisé pour enregistrer les cookies une fois les requêtes terminées. Cependant, si CURLOPT_COOKIEFILE n'est pas défini, Curl ne pourra transmettre aucun des cookies stockés lors des demandes futures.
Pour résoudre le problème, modifiez le code pour inclure l'option CURLOPT_COOKIEFILE :
define("COOKIE_FILE", "cookie.txt"); // Login the user $ch = curl_init('http://api.example.com/login/joe/smith'); curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); echo curl_exec ($ch); // Read the session saved in the cookie file echo "<br/><br/>"; $file = fopen("cookie.txt", 'r'); echo fread($file, 100000000); echo "<br/><br/>"; // Get the users details $ch = curl_init('http://api.example.com/user'); curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt ($ch, CURLOPT_COOKIEFILE, COOKIE_FILE); // Add the CURLOPT_COOKIEFILE option curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); echo curl_exec ($ch);
En incorporant l'option CURLOPT_COOKIEFILE, Curl enverra avec succès le fichier enregistré cookies pour les demandes ultérieures, éliminant ainsi l'erreur non autorisée et permettant l'accès aux détails de l'utilisateur.
Ce 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!