代码之家  ›  专栏  ›  技术社区  ›  mmundiff

在PHP中使用CURL或fsockopen的Wordpress自动登录

  •  3
  • mmundiff  · 技术社区  · 17 年前

    客户端希望单击链接并自动登录到Wordpress后端管理部分。

    $post_data['user_login'] = 'admin';
    $post_data['user_pass'] = 'password';
    $post_data['wp-submit'] = 'Log In';
    $post_data['redirect_to'] = 'http://example.com/wp-admin/';
    
    //traverse array and prepare data for posting (key1=value1)
    foreach ( $post_data as $key => $value) {
    $post_items[] = $key . '=' . $value;
    }
    
    //create the final string to be posted using implode()
    $post_string = implode ('&', $post_items);
    
    //we also need to add a question mark at the beginning of the string
    $post_string = '?' . $post_string;
    
    $data_length = strlen($post_string);
    
    $connection = fsockopen('www.example.com', 80);
    
    fputs($connection, "POST /wp-login.php HTTP/1.1\r\n");
    fputs($connection, "Host: www.example.com \r\n");
    fputs($connection, "Content-Type: application/x-www-form-urlencoded\r\n");
    fputs($connection, "Content-Length: $data_length\r\n");
    fputs($connection, "Connection: close\r\n\r\n");
    fputs($connection, $post_string);
    
    
    fclose($connection);
    

    我也试过卷发

    $ch = curl_init('http://example.com/wp-login.php');
    
    $post_data['user_login'] = 'admin';
    $post_data['user_pass'] = 'password';
    $post_data['wp-submit'] = 'Log In';
    $post_data['redirect_to'] = 'http://example.com/wp-admin/';
    //$post_data['testcookie'] = '0';
    //$post_data['rememberme'] = 'forever';
    
    foreach ( $post_data as $key => $value) {
    $post_items[] = $key . '=' . $value;
    }
    
    //create the final string to be posted using implode()
    $post_string = implode ('&', $post_items);
    
    
    
    
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
    curl_exec ($ch);
    curl_close ($ch); 
    

    有人知道怎么做吗?

    这是一个linux操作系统。运行php5。

    我以前用javascript做过这件事,只是在页面加载时提交了一个包含所有隐藏输入的表单。客户端不需要javascript

    1 回复  |  直到 17 年前
        1
  •  6
  •   Jens-Martin    17 年前

    这对我很有用:

    $username="admin";
    $password="admin";
    $url="http://www.yourdomain.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;
    
    推荐文章