1

こんにちは私はカールに問題があります。リモートログインがCurlで機能しないという古い投稿を見ましたが、機能しません。私は馬場のアドバイスに従いましたが、コードは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);
4

1 に答える 1

0

まず、Cookie をオフにしています。ログイン時にサイトがそれらを要求する場合があるようです。次の関数は私にとって非常に便利です。verbose オプションは詳細なカール エラーを表示し、'post' オプションはポスト文字列または値の連想配列に設定できます。キーはその値を持つ変数/フィールド名です。また、hipfile のフォームからいくつかの投稿変数が欠落していることにも気付きました。これが、ログインを拒否している理由である可能性もあります。

fetch('http://www.hipfile.com/');
$options['post'] = 'login=bnnoor&password=########&op=login';
$options['verbose'] = true;
$logged_in_page = fetch('http://www.hipfile.com/login.html',$options);

シンプルなカール機能:

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;
}
于 2012-10-07T00:05:43.657 に答える