J'essaie de faire mon tout premier test de régression de site. Le backend du site est constitué de plusieurs scripts PHP. J'ai donc appelé tous les fichiers PHP, les uns après les autres, en utilisant cURL, avec diverses entrées valides et invalides et vérifier le résultat. Tout fonctionne bien jusqu'à ce que j'atteigne la gestion d'authentification basée sur la session. Je vois qu'avec cURL le _SESSION ne fonctionne pas de la même manière qu'avec les appels normaux à PHP du navigateur (voir ci-dessous). Si je comprends bien, c'est parce que la fonctionnalité de la session nécessite un cookie du côté client, ce qui est manquant en cas d'utilisation de cURL comme je le fais (j'espérais que cela arriverait automagiquement). Comment puis-je faire en sorte que cURL prenne soin des cookies et appelle les fichiers php comme s'ils étaient appelés par un navigateur?Test de site PHP avec cURL et _SESSION
Dans l'exemple ci-dessous, je m'attends à voir "test" mais je vois "SESSION non défini" à la place.
fichier Appeler:
<?php
session_start();
$_SESSION["test"] = "test";
echo sendPost('https://rodichi.net/sandbox/php/test_curl_session_called.php', null);
function sendPost($url, $data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
if ($result === false) {
die(curl_error($ch));
}
curl_close($ch);
return $result;
}
fichier appelé:
<?php
session_start();
if (isset($_SESSION['test'])) {
echo($_SESSION['test'].'<br>');
} else {
echo 'SESSION not set<br>';
}
C'est clair, merci. Encore une question: Si la vérification de l'authentification dans la fonction appelée dépend du contenu de '_SESSION' (je vérifie par exemple' $ _SESSION ['expires'] ', je dois lire le cookie de session du fichier écrit par cURL et paramétrer la session Est-il possible de le faire avec les utilitaires cURL ou devrais-je le faire manuellement (puis-je restaurer un contenu de session en connaissant son identifiant)? – texnic
Je ne suis pas vraiment sûr de ce que vous demandez. envoie le cookie de session approprié, PHP démarre la session sur le serveur distant Votre client de test pour cURL n'aura aucune relation avec $ _SESSION, et ne devrait pas vraiment le faire – drew010
Désolé, je viens de réaliser moi-même l'unicité, était sur le point de supprimer le commentaire vous étiez plus rapide :) – texnic