Php 使用Curl登录NYTimes.com时出现问题

Php 使用Curl登录NYTimes.com时出现问题,php,curl,login-script,Php,Curl,Login Script,更新:证明我的代码是有效的。浏览器正在缓存以前失败的响应。谢谢你的指点 我正在构建一个原型,我想做的一件事是,如果用户是NYTimes.com的有效成员,通过提供他们的凭据来执行服务 使用curl,我尝试登录站点,然后检查成功与否 下面的代码不会返回错误,但会将我放回登录页面: <?php class Login { function Verify() { print $this->getContent(); } function getC

更新:证明我的代码是有效的。浏览器正在缓存以前失败的响应。谢谢你的指点

我正在构建一个原型,我想做的一件事是,如果用户是NYTimes.com的有效成员,通过提供他们的凭据来执行服务

使用curl,我尝试登录站点,然后检查成功与否

下面的代码不会返回错误,但会将我放回登录页面:

<?php
class Login {

    function Verify() {
        print $this->getContent();
    }

    function getContent() {

        $url    = 'http://www.nytimes.com/auth/login';

        // URI can be any NYT web page to be redirected to upon successful login
        // SAVEOPTION and Submit2 are Optional but in original web form so included here

        $fields = array(
            'is_continue'=> 'true',
            'USERID'     => urlencode('ENTER_YOUR_USERNAME'),
            'PASSWORD'   => urlencode('ENTER_A_PASSWORD'),
            'URI'        => urlencode('http://www.nytimes.com/robots.txt'), 
            'OQ'         => '',
            'OP'         => '',
            'SAVEOPTION' => 'YES',
            'Submit2'    => 'Log In'
        );

        $fields_string = '';

        if(!$curld = curl_init($url)) {
            echo "Could not connect to the specified resource";
               exit;
        }
        $ch        = curl_init();
        $useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";

        foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
        rtrim($fields_string,'&');

        curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_COOKIEJAR, "curl_login_cookie.txt");

        curl_setopt($ch ,CURLOPT_POST, count($fields));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);

        ob_start();
        curl_exec ($ch);

        curl_close ($ch);
        $result = ob_get_contents();
        ob_end_clean();

        return $result;
    }
}

$login  = new Login;
$result = $login->Verify();
?>


欢迎任何指针或建议。

您需要检查的结果是否为false(如果执行失败,则为false)

如果成功,请尝试检查和的结果,以查看有关该操作的信息


另外,最好在curl对象上设置
CURLOPT\u RETURNTRANSFER
选项,而不是使用输出缓冲来捕获结果。

您需要检查的结果是否为false(如果执行失败,则为false)

如果成功,请尝试检查和的结果,以查看有关该操作的信息


另外,最好在curl对象上设置
CURLOPT\u RETURNTRANSFER
选项,而不是使用输出缓冲来捕获结果。

用户为什么要给你他们的nytimes.com凭据?curl会发布吗?我不是PHP或Curl高手,但我认为这是get only。@tster Curl绝对可以发布。@Daniel-用户会给我他们的凭据,因为我会非常友好地询问他们,如果他们这样做,会提供更好的用户体验和更多数据。@Michael这很好,但一般来说,具有某种安全概念的用户会非常小心地将密码放弃到无关的站点,即使你有最好的意图。为什么用户要给你他们的nytimes.com凭据?curl会发帖吗?我不是PHP或Curl高手,但我认为这是get only。@tster Curl绝对可以发布。@Daniel-用户会给我他们的凭据,因为我会非常友好地询问他们,如果他们这样做,会提供更好的用户体验和更多数据。@Michael这很好,但一般来说,具有某种安全概念的用户会非常小心地将密码提供给一个不相关的站点,即使你是出于好意。