2012-01-14 20 views
0

スクリプトにログイン情報を送信しているcURLスクリプトがあります。cURLはsetcookieを起動しません

//open connection 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url; 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields1); 

//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch); 
//open connection 

スクリプトにはsetcookie機能があります。

setcookie("cookie_email",$email,time()+(3600*24*$i),"/"); 
setcookie("cookie_password",$password,time()+(3600*24*$i),"/"); 

フォームを使用してフォームにログインすると、すべて正常に動作します。何らかの理由でcURLを実行すると、setcookies関数をスキップします。

私はネット上にいましたが、解決策を見つけることができません。私はなぜそれがクッキーを設定していないのか分からない。

正しい方向へのステップがあれば幸いです。

おかげで、 フィル

UPDATE! - 近づく

私はクッキーをつかみ、クッキーファイルに入れていくつかの変更を加えました。私が設定した2つの問題。
1.ファイル内のCookieされたパスワードは、次のようになります。deleted 2.ブラウザにCookieが設定されていません。

ファイルにmd5($ password)を取得するにはどうすればいいですか? curl_setopt($ ch、CURLOPT_COOKIEFILE、 'cookies/cookies.txt'); ブラウザにCookieを設定しますか?

+1

が重複する可能性をファイル自体)を作成します[ PHPとcURLのクッキー](http://stackoverflow.co m/questions/1625111/php-and-curl-cookies) – mario

+0

私のサーバー上のsubmit.phpスクリプトを指し示すfacebook登録フォームを使用しています。スクリプトはユーザーをデータベースに追加し、生成したユーザー名とパスワードを取得してログインスクリプトに送信します。ログインスクリプトはCookieを設定します。 ブラウザでCookieを設定する前に、ユーザーがサイトにアクセスする必要があることが記載されています。彼らは私の提出スクリプトを打つこれを達成しないのですか?または商品でクッキー変数を設定してスクリプトを処理できますか? – krazymatty

+0

'UserBrowser-> YourScript'と' YourScript-> ServerForm'は異なるHTTP接続です。クッキーは飛び越えません。それを渡すと、おそらく助けにならないでしょう。 (詳細はあまりにも少ない) – mario

答えて

2

cookieを保存する場所を設定するには、curlにCURL_COOKIEJARとCURL_COOKIEFILEオプションを設定する必要があります。

EDIT:あなたの例の書き換え:

//open connection 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url; 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields1); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/cookies.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/cookies.txt'); 

//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch); 

これは、限り、あなたのウェブサーバを書くことができるよう(あなたは、ディレクトリ「クッキーを/」作成していると「cookies.txt」と呼ばれるファイルにクッキーが保存されますと仮定しそのディレクトリに、それは)あなたにもその要求のためにcookiefileを設定し、その後彼らの要求を送信するときにcookies.txtに保存されているすべてのクッキーを使用します

後続の要求(仮定の

+0

ありがとうマジック!私はそれをする方法を知らない。私はphp.netでそれを理解していない。 Cookieファイルを作成してサーバーに配置しますか?私が見ることができる例がありますか? – krazymatty

+0

あなたのコードの更新版で私の回答を編集しました。 CURLOPT_COOKIEJARは、クッキーの応答が保存される場所です。 CURL_COOKIEFILEは、リクエストのCookieをロードする場所です。最初は空ですが、それ以降のリクエストでは以前に保存されたCookieが含まれます。 –

+0

私のカールの私の最初のページは、ログインスクリプトへのヘッダ()付きのサブミットスクリプトに行きます。 2つのカール関数が必要ですか?私はオンにしなければなりません: \t curl_setopt($ ch、CURLOPT_FOLLOWLOCATION、true); すべての方法で処理するためです。 あなたが書き込んだ行を追加しました。ターゲットページに処理中と着陸中ですが、まだログインしていません。 – krazymatty

関連する問題