Я работаю над проектом для клиента, которому требуется автоматический вход в систему из ссылки.
Я использую страницу рукопожатия, чтобы сделать это со следующим кодом:
$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;
Это прекрасно работает. Он записывает меня отлично.
Проблема заключается в том, что я считаю, что ключи WordPress не имеют URL-адреса.
Чтобы уточнить, моя страница рукопожатия (которая входит в систему меня) находится в каталоге "blog", а мое приложение WordPress находится в директории "wordpress", которая находится внутри каталога "blog". URL-адрес в браузере говорит ..blog/handshake.php
. Тем не менее, он имеет раздел администратора WordPress в окне браузера. Ссылки в WordPress Admin теперь работают неправильно, потому что URL-адрес находится в каталоге ../blog
, когда он должен находиться в каталоге ..blog/wordpress/wp-admin
.
Есть ли способ cURL, чтобы URL-адрес в браузере отражал фактическую страницу?
Вместо этого я должен использовать FSockOPen?