автоматический вход в панель WordPress с другого сайта

Я хочу автоматически войти в WP admin / dashboard с другого сайта, не перейдя через процесс входа в систему. Я пробовал следующее, но не повезло:

<?php $username="admin"; $password="mypasw"; $url="http://example.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; ?> 

Это похоже на то, что я показываю только страницу панели инструментов, но я не зарегистрирован, так как нажатие на любую кнопку на странице администратора перенаправляет только ту страницу, которая является страницей сайта. 🙁

Если у вас есть доступ к файлам веб-сайта, на котором вы пытаетесь войти в систему. Вы можете добавить сценарий автоматической регистрации php и $ _POST имя пользователя и пароль для этого скрипта, например:

 if ($_POST) { $errors = array(); $username = esc_sql($_REQUEST['username']); $password = esc_sql($_REQUEST['password']); $remember = esc_sql($_REQUEST['rememberme']); $remember = ($remember) ? "true" : "false"; $login_data = array(); $login_data['user_login'] = $username; $login_data['user_password'] = $password; $login_data['remember'] = $remember; $user_verify = wp_signon($login_data, true); if (is_wp_error($user_verify)) { $errors[] = 'Invalid username or password. Please try again!'; } else { wp_set_auth_cookie($user_verify->ID); wp_redirect(admin_url()); exit; } } 

Ссылки на WordPress codex:

Надеюсь, поможет.

Изменить: $ wpdb-> escape устарел с версии WordPress версии 3.6, вместо этого используйте wpdb :: prepare () или esc_sql ()! Я изменил код для использования esc_sql ().