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 );
?>
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,