Oui, voici le code:
// ...some code...
$fields = [
'page' => 'connexion',
'formulaire_action' => 'login_public_page',
'formulaire_action_args' => ''// generated data by SPIP,
'formulaire_action_sign' => '',
'var_login' => $_POST['login'] ?? '',
'password' => $_POST['password'] ?? ''
];
$urlLogin = "https://" . $_SERVER["HTTP_HOST"] . "/spip.php?page=connexion";
$urlLogout = "https://" . $_SERVER["HTTP_HOST"] . "/spip.php?action=logout&logout=public";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlLogin);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, ''); // Where to save cookies after the request, but I don't save the file, I get cookie "on the fly"
curl_setopt($ch, CURLOPT_COOKIEFILE, ''); // Where to read cookies from before the request
$response = curl_exec($ch);
$cookies = curl_getinfo($ch, CURLINFO_COOKIELIST);
curl_close($ch);
// handle $cookies
// next code
Quelques commentaires et questions :
« page » => « connexion »,
« formulaire_action » => « login_public_page »,
« formulaire_action_args » => « »// generated data by SPIP,
« formulaire_action_sign » => « »,
Ce code-là est hardcoder, je n’arrive pas le récupérer d’ici. Sans ce bout de code authentification ne passe pas. Si je comprends bien, « formulaire_action_args » est unique par serveur (?). Ça fait environs deux mois que je travaille avec le SPIP, je n’ai pas encore compris comment « formulaire_action_args » est généré. Je suis en train de creuser sur ce sujet, mais pour l’instant ça marche comme ça. Donc si vous pouvez m’aiguiller sur ce sujet je serai très reconnaissant
curl_setopt($ch, CURLOPT_COOKIEJAR, « »); => Je ne crée pas de fichier (cela prend un certain temps) et ainsi, je peux immédiatement intercepter les cookies. Et ça résout problème s’il y a quelques personnes qui se connectent en même temps.