Estoy trabajando en un proyecto para un cliente que necesita un inicio de sesión automático desde un enlace.PHP, cURL publicar para iniciar sesión en WordPress
estoy usando una página de apretón de manos para hacer esto con el siguiente código:
$username = "admin";
$password = "blog";
$url = "http://wordpressblogURL/";
$cookie = "cookie.txt";
$postdata = "log=" . $username . "&pwd=" . $password . "&wp-submit=Log%20In&redirect_to=" . $url . "blog/wordpress/wp-admin/&testcookie=1";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url . "blog/wordpress/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, 0);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url . "blog/wordpress/wp-login.php");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;
exit;
Esto funciona bien. Me registra en grande.
El problema es que creo que WordPress saca las llaves de la URL.
Para completar, mi página de saludo (que me registra) está en el directorio "blog" y mi aplicación WordPress está en el directorio "wordpress" que se encuentra dentro del directorio "blog". La URL en el navegador dice ..blog/handshake.php
. Sin embargo, tiene la sección Admin de WordPress en la ventana del navegador. Los enlaces de WordPress Admin ahora no funcionan correctamente, porque la URL está en el directorio ../blog
cuando debe estar en el directorio ..blog/wordpress/wp-admin
.
¿Hay alguna manera en cURL de que la URL en el navegador refleje la página real?
¿Debo usar FSockOPen?
Buena idea, pero eso supone que el script de inicio de sesión y la instalación de wordpress están en el mismo dominio; de lo contrario, no hay forma de configurar la cookie. – Eli
Si tiene suficiente acceso, configure un subdominio del dominio wordpress y úselo para establecer cookies según sea necesario. Es algo así como un truco, pero aún mejor que crear un proxy de manera fragmentada. – Kalium