Comment se connecter avec Curl en utilisant SSL et les cookies
Problème :
Connexion à un site Web utilisant Curl, en particulier barnesandnoble.com, ne réussit pas. La page est renvoyée sans erreur, mais le champ email est rempli avec l'email initial saisi. La modification de l'URL de connexion vers un site Web non HTTPS (c'est-à-dire eBay) permet une connexion réussie.
Cause :
Les causes potentielles incluent :
Solution :
Le code suivant résout ces problèmes et démontre une connexion réussie à l'aide de Curl, SSL et des cookies :
</p> <p>//...<br>// Options de boucle précédentes omises par souci de concision<br>//...</p> <p>// Obtenir les champs du formulaire<br>$fields = getFormFields($content);</p> <p>// Définir l'e-mail et le mot de passe<br>$fields['emailAddress'] = $EMAIL;<br>$fields['acctPassword'] = $PASSWORD; </p> <p>// Obtenir la valeur x<br>if (preg_match('/op.asp?x=(d )/i', $content, $match)) {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$x = $match[1];
>
// Définir l'URL de connexion avec la valeur x
$LOGINURL = "https://cart2.barnesandnoble.com/mobileacct/op.asp?x=$x";
// Définir les champs POST
$POSTFIELDS = http_build_query($fields);
// Changer l'URL pour l'URL de connexion
curl_setopt($ch, CURLOPT_URL, $LOGINURL);
// Définir les options de publication
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS);
// Effectuer la connexion
$result = curl_exec( $ch);
imprimer $result;
//...
Explication :
En implémentant Ces changements, Curl peut se connecter avec succès malgré l'utilisation de HTTPS et les différences potentielles dans la gestion des cookies.
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!