2012-03-19 10 views
0

よく動作しない、私はいくつかのページにカールを使用してログインします。 私はブラウザにその形式でアドレスバーでこのデータを貼り付けると http://mywebpage.net/login.php?username=HERESMYUSERNAME&password=dded0102f44e7e0809520eb93055cb16 ページがアドレスhttp://mywebpage.net/user.php、すべての作品に私を取ります。 今私はcURLを使って同じ効果を得たいが、何かがうまくいかない。カールが

$url="http://mywebpage.net/login.php"; 
$cookie="cookie.txt"; 

$postdata = "username=cow&password=ass"; 

$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, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_REFERER, $url); 

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); 

それが空の入力のしてくれログインページを示していますし、それは私にログインし、正しいアドレスに移動しません。 私はショーをwww.mywebpage.net/user.php入力すると、ここで

の作業コード "401 ERR":私は今/all.phpする自分自身をリダイレクトするにはどうすればよい

$url="http://mywebpage.net/login.php?username=user&password=ddad0102f44e7f0800354eb11155cb16"; 
$cookie="cookie.txt"; 

$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_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_REFERER, $url); 

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); 

を?

+0

あなたは 'GET'方式でデータを送信し、それが動作します。 (0、$ chを、CURLOPT_POST) 'ますcurl_setoptに変更もあなたのコードでそれを試してみてください;'あなたが明示的に正しいアドレスに移動する*ない*カール指示するよう – safarov

+0

あなたは、0に設定され 'CURLOPT_FOLLOWLOCATION'を持つGETとして送信します。コードが別の場所からコピー貼り付けされたものであれば、行ごとに調べて、各オプションの意味を文書で確認することをお勧めします。 – JJJ

答えて

1

私はあなたがCURL POSTを使用している代わりに

  • CURLOPT_FOLLOWLOCATIONがfalseに設定されていますが、ログインスクリプトがuser.phpするリダイレクトを行い、認証が機能していても、あなたは次のようになりGET

    1. 間違った3つの物事を見ます空の応答を得る。私はこれが本当のURLまたは単なる一例であるかどうかわからないです..あなたが本当
    2. にあなたが有効か動作していないではない与えたURLをCURLOPT_FOLLOWLOCATIONを設定すべきだと思います。

    最初の例に感謝 :)

  • +0

    それは動作します!どうもありがとう! :)ハハ、私は今とても幸せです! ;後に、それはuser.phpに私をリダイレクトしてログインし、私はシンプルall.phpファイル – breq

    +0

    最後の質問、ちょうどall.phpをプルすると、ログイン情報をもう一度渡す必要はありません – breq

    +0

    を表示したいので、あなたがセッションとクックの情報を使用してどのように私ができるようになりましたwww.mywebpage.net/all.phpするnawigate D – Baba