J'ai une commande cURL à l'aide de laquelle je suis authentifié sur un site web et il donne un cookie en réponse, puis en utilisant ce cookie je peux faire l'API REST appels à ce servicePHP - Utiliser cURL pour obtenir un cookie à partir d'une URL de redirection mais sans réponse
Voici la commande cURL travail:
curl -v -l -H "Content-Type: application/x-www-form-urlencoded" -H "Referrer:https://mywebsiteurl.com?ticket=unique_ticket_id" -d "_charset_=UTF-8&errorMessage=User+name+and+password+do+not+match&resource=%2F&username=username%40domain.com&password=XXXXXX&nextpage=welcomeCM.jsp&viewInfo=&ticket=unique_ticket_id" -X POST https://mywebsiteurl.com/index.jsp
Dans le paramètre de ticket de commande ci-dessus contient un identifiant de ticket unique qui est passé avec le site url
maintenant, je suis essayer d'accomplir la même chose en utilisant cURL PHP, voici le code PHP:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://mywebsiteurl.com/index.jsp");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "_charset_=UTF-8&errorMessage=User+name+and+password+do+not+match&resource=%2F&username=username%40domain.com&password=XXXXXX&nextpage=welcomeCM.jsp&viewInfo=&ticket=unique_ticket_id");
curl_setopt($ch, CURLOPT_POST, 1);
$headers = array(
'Content-Type: application/x-www-form-urlencoded',
'Referrer: https://mywebsiteurl.com?ticket=unique_ticket_id'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
echo $result;
curl_close ($ch);
Ici echo $result
ne montre rien
J'ai ensuite essayé var_dump($result);
et donne cette sortie: string(0) ""
ce qui signifie que rien ne se retourne dans $response
Après cela, j'essayé curl_getinfo
et a ajouté le code suivant:
echo "<pre>";
$info = curl_getinfo($ch);
print_r($info);
echo "</pre>";
Et cela m'a donné le tableau suivant:
Array
(
[url] => https://mywebsiteurl.com/index.jsp
[content_type] => text/html;charset=UTF-8
[http_code] => 302
[header_size] => 1306
[request_size] => 619
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 1.540687
[namelookup_time] => 0.028262
[connect_time] => 0.171774
[pretransfer_time] => 0.462507
[size_upload] => 280
[size_download] => 0
[speed_download] => 0
[speed_upload] => 181
[download_content_length] => 0
[upload_content_length] => 280
[starttransfer_time] => 1.54066
[redirect_time] => 0
[redirect_url] => https://mywebsiteurl.com/[email protected]&locale=en_US
[primary_ip] => YY.YYY.YYY.YY
[certinfo] => Array
(
)
[primary_port] => 443
[local_ip] => XX.XX.XXX.XX
[local_port] => 47692
)
Maintenant, mon but est d'obtenir le cookie dans $result
, mais il est vide & rien ne se retourne en elle
Est-ce que quelque chose manque dans la commande cURL équivalent du code PHP ?
Quelqu'un peut-il s'il vous plaît aidez-moi-moi de & dans la direction pour récupérer le cookie
Merci beaucoup!
MISE À JOUR
J'ajouté curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
à la demande de l'avoir suivi la redirection 302 après la connexion réussie
Mais cette fois après l'exécution de cURL, echo $result
réoriente ma page web locale actuelle à /Dashboard?viewInfo=
qui évidemment n'existe pas
aussi cette fois-ci var_dump($result);
se traduit par: string(1462) " "
Et curl_getinfo($ch)
cette fois-ci donne le tableau suivant:
Array
(
[url] => https://mywebsiteurl.com/[email protected]&locale=en_US
[content_type] => text/html;charset=UTF-8
[http_code] => 200
[header_size] => 1821
[request_size] => 956
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 1
[total_time] => 1.746911
[namelookup_time] => 1.5E-5
[connect_time] => 1.5E-5
[pretransfer_time] => 6.2E-5
[size_upload] => 0
[size_download] => 1462
[speed_download] => 836
[speed_upload] => 0
[download_content_length] => 1462
[upload_content_length] => 0
[starttransfer_time] => 0.146587
[redirect_time] => 1.6003
[redirect_url] =>
[primary_ip] => YY.YYY.YYY.YY
[certinfo] => Array
(
)
[primary_port] => 443
[local_ip] => YY.YY.YYY.YY
[local_port] => 47705
)
ne peut toujours pas obtenir le cookie requis ici, S'il vous plaît aider!
Une note qui ne sera probablement pas résoudre votre problème, mais faut savoir: « Référent » est mal orthographié, il devrait être « Referer » (oui, c'est l'orthographe anglaise incorrecte, mais c'est juste la façon dont il est en HTTP). –
Vous devez ajouter 'curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, 1);' à la demande de le faire suivre la redirection 302 après la connexion réussie. – drew010
@HaydenSchiff Oui vous avez raison, en effet c'est une faute d'orthographe, mais voici comment c'est en HTTP :) – dreamcoder007