Cum să creezi o sesiune de login folosind CURL în WordPress

14 dec. 2011, 14:49:17
Vizualizări: 13.5K
Voturi: 1

Folosind următorul cod am întâmpinat câteva probleme: Autentificarea funcționează, dar fiecare link din panoul de administrare pe care îl accesez duce la pagina 404 not found. Se pare că nu se creează o sesiune funcțională?

$username="admin";
$password="admin";
$url="http://www.domeniultau.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;
0
Toate răspunsurile la întrebare 3
0

Nu sunt sigur că e o problemă de sesiune, cred că are de-a face cu faptul că Panoul de control WordPress folosește linkuri relative.

O soluție rapidă și puțin improvizată ar fi să adaugi

curl_setopt($ch,CURL_COOKIEFILE, '');  // Activează suportul pentru sesiuni

Apoi, după închiderea handler-ului curl, adaugă o redirecționare către locația reală a panoului:

curl_close($ch);
header('location: blog/wordpress/wp-admin/');
die();
14 dec. 2011 16:12:15
0

@Bainternet...răspuns bun, am încercat metoda ta și sunt unele erori pe care vreau să le comentez

curl_setopt($ch,CURLOPT_COOKIEFILE,'cookie.txt'); lipsește OPT

și pentru redirecționare se adaugă URL-ul de mai sus, iar pentru a evita acest lucru poți folosi

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

aici poți furniza URL-ul de redirecționare după cum ai nevoie către orice pagină din administrarea WordPress.

4 apr. 2017 17:15:01
0

Iată codul care a funcționat pentru mine:

Modificarea cheie este că am eliminat parametrul numit "testcookie" din șirul post.

Notă: înlocuiți "mywordpress" cu site-ul dumneavoastră, precum și numele de utilizator și parola în codul de mai jos

$curl = curl_init();

//---------------- setări generice cURL început ----------------
$header     = array(
      "Referer: https://mywordpress/wp-login.php",
"Origin: https://mywordpress",
"Content-Type: application/x-www-form-urlencoded",
"Cache-Control: no-cache",
"Pragma: no-cache",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15"
      );


curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookies.txt');
//---------------- setări generice cURL sfârșit ----------------
31 mai 2020 06:06:52