繁体   English   中英

PHP curl发布登录到WordPress

[英]PHP curl post to login to wordpress

使用PHP中的CURL或fsockopen跟随Wordpress自动登录 ,使用php_curl登录到wordpress,就我使用WAMP(apache / php)而言,它工作正常。

但是,当谈到专用服务器上的IIS时,它什么也不返回。

我已经编写了以下功能,该功能在我的本地wamp上运行良好,但是当部署到客户端的专用Windows服务器2k3时,效果却并非如此。 请帮我

function post_url($url, array $query_string)
    {
        //$url = http://myhost.com/wptc/sys/wp/wp-login.php
        /*      $query_string = array(
                            'log'=>'admin',
                            'pwd'=>'test',
                            'redirect_to'=>'http://google.com',
                            'wp-submit'=>'Log%20In',
                            'testcookie'=>1
                        );
        */

        //temp_dir is defined as folder = path/to/a/folder
        $cookie= temp_dir."cookie.txt";


        $c = curl_init($url);



        if (count($query_string))
        {
            curl_setopt ($c, CURLOPT_POSTFIELDS, 
                http_build_query( $query_string )
            );

        }

        curl_setopt($c, CURLOPT_POST, 1);
        curl_setopt($c, CURLOPT_COOKIEFILE, $cookie);
        //curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 1);
        //curl_setopt($c, 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($c, CURLOPT_TIMEOUT, 60);
        curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); //return the content
        curl_setopt($c, CURLOPT_COOKIEJAR, $cookie);
        //curl_setopt($c, CURLOPT_AUTOREFERER, 1);
        //curl_setopt($c, CURLOPT_REFERER, wp_admin_url);
        //curl_setopt($c, CURLOPT_MAXREDIRS, 10); 

        curl_setopt($c, CURLOPT_HEADER, 0);
        //curl_setopt($c, CURLOPT_CRLF, 1);


        try {
            $result = curl_exec($c);
        }
        catch (Exception $e)
        {
            $result = 'error';
        }

        curl_close ($c);

        return $result;  //it return nothing (empty)
    }

其他事实

  1. curl_error($ c); 一无所获
  2. 当标头CURLOPT_HEADER设置为ON时,它将返回此标头

HTTP / 1.1 200 OK缓存控制:无缓存,必须重新验证,max-age = 0语法:无缓存Content-Type:text / html; charset = UTF-8过期:格林尼治标准时间1984年1月11日星期三05:00:00格林尼治标准时间上次修改时间:2010年5月6日星期四21:06:30 GMT服务器:Microsoft-IIS / 7.0 X-Powered-By:PHP / 5.2。 13 Set-Cookie:wordpress_test_cookie = WP + Cookie + check; 路径= / wptc / sys / wp / Set-Cookie:wordpress_b13661ceb5c3eba8b42d383be885d372 = admin%7C1273352790%7C7d8ddfb6b1c0875c37c1805ab98f1e7b; 路径= / wptc / sys / wp / wp-content / plugins; httponly Set-Cookie:wordpress_b13661ceb5c3eba8b42d383be885d372 = admin%7C1273352790%7C7d8ddfb6b1c0875c37c1805ab98f1e7b; 路径= / wptc / sys / wp / wp-admin; httponly Set-Cookie:wordpress_logged_in_b13661ceb5c3eba8b42d383be885d372 = admin%7C1273352790%7Cb90825fb4a7d5da9b5dc4d99b4e06049; 路径= / wptc / sys / wp /; httponly刷新:0; url = http://myhost.com/wptc/sys/wp/wp-admin/ X-Powered-by:ASP.NET日期:2010年5月6日,星期四,21:06:30 GMT内容长度:0

  1. CURL版本信息:数组([version_number] => 463872 [age] => 3 [features] => 2717 [ssl_version_number] => 0 [version] => 7.20.0 [host] => i386-pc-win32 [ssl_version ] => OpenSSL / 0.9.8k [libz_version] => 1.2.3 [protocols] =>数组([0] => dict [1] =>文件[2] => ftp [3] => ftps [4] => http [5] => https [6] => imap [7] => imaps [8] => ldap [9] => pop3 [10] => pop3s [11] => rtsp [12] => smtp [13] => smtps [14] => telnet [15] => tftp))

    1. PHP版本5.2.13
    2. Windows Server 2K3
    3. IIS 7
    4. 在Apache,我的本地主机上的PHP 3.0上运行良好(Windows)

快速思考:检查以确保IIS可以写入temp_dir。“ cookie.txt”。

我自己修复了它,这是对wordpress的一些小修复,而不是任何有关IIS或PHP的信息。

我在以下部分中修改了wp_redirect()(仅注释为主要部分)以进行修复

function wp_redirect($location, $status = 302) {
    global $is_IIS;

    $location = apply_filters('wp_redirect', $location, $status);
    $status = apply_filters('wp_redirect_status', $status, $location);

    if ( !$location ) // allows the wp_redirect filter to cancel a redirect
        return false;

    $location = wp_sanitize_redirect($location);

    /*
    if ( $is_IIS ) {
        status_header($status);
        header("Refresh: 0;url=$location");
    } else {
        if ( php_sapi_name() != 'cgi-fcgi' ) {
            status_header($status); // This causes problems on IIS and some FastCGI setups

        }
        header("Location: $location", true, $status);
    }
    */
    header("Location: $location", true, $status);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM