web-dev-qa-db-fra.com

Création d'une session de connexion via CURL

J'ai rencontré des problèmes avec le code suivant: La connexion fonctionne, mais chaque lien du tableau de bord sur lequel je clique suivra dans la page 404 non trouvée. Il semble qu'il n'y aura pas de session de travail créée?

$username="admin";
$password="admin";
$url="http://www.yourdomain.com/";
$cookie="cookie.txt";

$postdata = "log=". $username ."&pwd=". $password ."&wp-submit=Log%20In&redirect_to=". $url ."wp-admin/&testcookie=1";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url . "wp-login.php");
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url . "wp-admin/");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;
exit;
1
flowdee

Pas sûr que ce soit un problème de session, je pense que cela a à voir avec le fait que WordPress Dashboard utilise des liens relatifs.

Un correctif rapide hackish serait d'ajouter

curl_setopt($ch,CURL_COOKIEFILE, '');  // Enables session support

Ajoutez ensuite ceci après la fermeture de la redirection du gestionnaire Curl vers l'emplacement actuel du tableau de bord:

curl_close($ch);
header('location: blog/wordpress/wp-admin/');
die();
3
Bainternet

@Bainternet ... bonne réponse, j'ai essayé votre chemin et il y a une erreur que je veux commenter

curl_setopt ($ ch, CURLOPT_COOKIEFILE, 'cookie.txt'); manque d'OPT

et pour la redirection, il ajoute au-dessus de l'URL et pour éviter que vous ne puissiez utiliser

curl_setopt ($ ch, CURLOPT_POSTFIELDS, 'log ='. urlencode ($ log). '& pwd ='. urlencode ($ mot_passe). '& redirect_to ='. urlencode ($ redirect));

ici, vous pouvez fournir une URL de redirection selon vos besoins pour n’importe quelle partie de la page d’administration de wordpress.

0
abby37