php curl登录不起作用

php curl登录不起作用,php,curl,Php,Curl,嗨,我的卷发有问题。我看了一篇旧文章,但它不起作用。我听从了爸爸的建议,但代码输入了if语句。对不起,我的英语不好。有人能帮我吗 代码如下: $url="http://hipfile.com/"; $urllog="http://hipfile.com/login.html"; $postdata = "login=bnnoor&password=########&op=login"; $ch = curl_init(); curl_setopt ($ch, CURLOP

嗨,我的卷发有问题。我看了一篇旧文章,但它不起作用。我听从了爸爸的建议,但代码输入了if语句。对不起,我的英语不好。有人能帮我吗

代码如下:

$url="http://hipfile.com/";
$urllog="http://hipfile.com/login.html"; 

$postdata = "login=bnnoor&password=########&op=login";

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
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_REFERER, $urllog); 

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 

if (!$result) { 
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); // make sure we closeany current curl sessions 
    die($http_code.' Unable to connect to server. Please come back later.'); 
} 
 echo $result;  
 curl_close($ch);

你先吃饼干。当您登录时,站点可能需要它们。 下面的函数对我来说非常方便,verbose选项将显示详细的curl 错误和“post”选项可以设置为post字符串或值的关联数组 键是变量/字段名及其值。我也注意到你少了一些 将表单中的变量发布到hipfile上,这可能也是他们拒绝您的 登录

简单旋度函数:

function fetch( $url, $z=null ) {
    $ch =  curl_init();
    $useragent = isset($z['useragent']) ? $z['useragent'] : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2';

    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $ch, CURLOPT_POST, isset($z['post']) );

    if( isset($z['post']) )         curl_setopt( $ch, CURLOPT_POSTFIELDS, $z['post'] );
    if( isset($z['refer']) )        curl_setopt( $ch, CURLOPT_REFERER, $z['refer'] );
    if( isset($z['ssl']) )          curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
    if( isset($z['ssl']) )          curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    if( isset($z['verbose']) )      curl_setopt( $ch, CURLOPT_VERBOSE, true );
    if( isset($z['get_header']) )   curl_setopt( $ch, CURLOPT_HEADER, true );
    if( isset($z['header']) )       curl_setopt( $ch, CURLOPT_HTTPHEADER, $z['header'] );

    curl_setopt( $ch, CURLOPT_USERAGENT, $useragent );
    curl_setopt( $ch, CURLOPT_COOKIEJAR,  'cookiejarfilepath' );
    curl_setopt( $ch, CURLOPT_COOKIEFILE, 'cookiejarfilepath' );

    $result = curl_exec( $ch );
    curl_close( $ch );
    return $result;
}

你到底犯了什么错误?什么不起作用?您是否收到错误:“无法连接到服务器。”。请稍后再来。“?如果我理解正确,您看到无法连接…,那么$http_代码是什么?你能给dumd$result;?http代码是302,我得到的错误是无法连接到服务器。请稍后再来var_dump$result的结果是什么?behzad n问题与您的不同与您的不同。。。由于设置了CURLOPT_FOLLOWLOCATION,因此无法获取HTTP 302。。你能把$result@Massimo zampieri转换成var_dump吗?我可以试试你的代码Adam,但它不起作用,也不能登录。我不明白问题出在哪里。Massimo,当我运行这个并回显$logged\u in\u page变量时,我得到了hipfile的首页,我假设这是因为登录字符串不包含真正的凭据。正如我前面提到的,您的登录字符串中还缺少一些post变量。Hipfile可能也在检查这些。如果您试图登录的服务很可能会阻止人们通过编码进入,那么您还需要匹配浏览器发送的所有标题。使用Firebug或Chrome开发者工具来精确匹配这些。我尝试在页面中使用echo$logged\u,但它没有显示首页。这是表格:用户名:密码:你能告诉我缺失的变量是什么吗?我也尝试过这种方式:$options['post']='login=bnnoor&password=&op=login&redirect=';但它仍然不起作用。你知道吗?
function fetch( $url, $z=null ) {
    $ch =  curl_init();
    $useragent = isset($z['useragent']) ? $z['useragent'] : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2';

    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $ch, CURLOPT_POST, isset($z['post']) );

    if( isset($z['post']) )         curl_setopt( $ch, CURLOPT_POSTFIELDS, $z['post'] );
    if( isset($z['refer']) )        curl_setopt( $ch, CURLOPT_REFERER, $z['refer'] );
    if( isset($z['ssl']) )          curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
    if( isset($z['ssl']) )          curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    if( isset($z['verbose']) )      curl_setopt( $ch, CURLOPT_VERBOSE, true );
    if( isset($z['get_header']) )   curl_setopt( $ch, CURLOPT_HEADER, true );
    if( isset($z['header']) )       curl_setopt( $ch, CURLOPT_HTTPHEADER, $z['header'] );

    curl_setopt( $ch, CURLOPT_USERAGENT, $useragent );
    curl_setopt( $ch, CURLOPT_COOKIEJAR,  'cookiejarfilepath' );
    curl_setopt( $ch, CURLOPT_COOKIEFILE, 'cookiejarfilepath' );

    $result = curl_exec( $ch );
    curl_close( $ch );
    return $result;
}