Login remoto en WordPress con PHP y curl

Recientemente he tenido la necesidad de crear un programa en PHP capaz de autentificarse en WordPress automáticamente y acceder a una página interna de administrador. Para ello, utilicé el siguiente código:

<?php

function curl_get_wp_login( $login_user, $login_pass, $login_url, $visit_url, $http_agent, $cookie_file ){

if( !function_exists( ‘curl_init’ ) || ! function_exists( ‘curl_exec’ )){
$m = «Curl no disponible en tu servidor de PHP»;
echo $m;
}

// Enviando los datos de POST
$data = «log=». $login_user .»&pwd=» . $login_pass . «&wp-submit=Log%20In&redirect_to=» . $visit_url;

// Iniciamos curl
$ch = curl_init();

//URL de login
curl_setopt( $ch, CURLOPT_URL, $login_url );

// Habilitamos cookies
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie_file );

// No usamos SSL
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );

// User agent
curl_setopt( $ch, CURLOPT_USERAGENT, $http_agent );

// Definimos un timeout para la petición
curl_setopt( $ch, CURLOPT_TIMEOUT, 60 );

curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );

// Devolvemos la respuesta
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );

// Configuramos la transferencia HTTP
curl_setopt( $ch, CURLOPT_REFERER, $login_url );

// Configuramos los campos POST a enviar
curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );
curl_setopt( $ch, CURLOPT_POST, 1);

// Almacenamos la respuesta
$content = curl_exec ($ch);

/*
** Si necesitamos visitar otra URL, la configuramos aquí
** curl_setopt( $ch, CURLOPT_URL, ‘Nueva URL’ );
** $content = curl_exec ($ch);
*/

// Cerramos la petición curl
curl_close( $ch );

// Podemos imprimir el resultado de la petición
echo $content;
}

//Ahora utilizamos la función

// Username for login
$login_user = «Admin»;

/*
** Password for this username
*/
$login_pass = «Mi_contraseña_secreta»;

/*
** Login url address.
*/
$login_url = «https://puerto53.com/wp-login?jetpack-sso-show-default-form=1»;

// URL a visitar después del login
$visit_url = urlencode( ‘https://puerto53.com/wp-admin/edit.php’ );
$cookie_file = «/tmp/cookie.txt»;

/*
** Configuramos el user agent.
*/
$http_agent = «Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6»;

// Ejecutamos la petición de acceso y visita de la URL después del login
curl_get_wp_login( $login_user, $login_pass, $login_url, $visit_url, $http_agent, $cookie_file );

?>

COMPÁRTEME

Deja un comentario