2012-04-23 8 views
10

私はクッキーのためのcURLの4つのオプションを理解したいと思います:cURLの - クッキーとセッション

CURLOPT_COOKIESESSION 
CURLOPT_COOKIEFILE 
CURLOPT_COOKIEJAR 
CURLOPT_COOKIE 

私はCOOKIEJARがクッキーを書き込むためのものであり、COOKIEFILEが読み取りのためのものであることを理解しています。 COOKIESESSIONとは何ですか? CURLOPT_COOKIEはカスタムですが、サーバーとのセッションを維持するために使用できますか?

+1

is not 2番目と4番目は同じですか? – Pheonix

答えて

19

CURLOPT_COOKIESESSIONを理解するには、クッキーに関するいくつかのことを知る必要があります。クッキーには、クッキーを発行するウェブサイトによって設定された有効期限があります。クッキーの有効期限が過ぎた場合、ブラウザ/クライアントはそれを送信せず、クライアントによって削除されます。有効期限なしのCookieが設定されている場合、ブラウザはブラウザセッションが閉じられるか、ユーザーがログアウトしてCookieが設定されなくなるまでそのCookieを使用する必要があります。

つまり、CURLOPT_COOKIESESSIONは、ブラウザを閉じた状態でcURLをシミュレートする方法です。 COOKIEFILEにいくつかのセッションクッキー(有効期限のないクッキー)がある場合、通常はファイルに存在する場合にこれらを送信します。 CURLOPT_COOKIESESSIONを設定すると、有効期限のないCookieは送信されません。

CURLOPT_COOKIEは、サーバーにraw形式で送信されるCookieデータを設定する手段を提供します。これは、たとえば、送信したい生のHTTP Cookieがある場合に便利です。このオプションがない場合は、これらのCookieをCOOKIEFILEに追加するか、カスタムHTTPヘッダーCookie:に元の値を設定する必要があります。

+0

私は同じセッションクッキーを共有する必要がある2つの別々のスクリプトを使用する必要があります。 (2)**いくつかのページ(init、set、exec、close)、**(3)**のセッションを維持する**(1)**サーバーとの新しいセッションを開始する**スクリプトを閉じます。 **(4)**新しいスクリプトを開く、**(5)**同じセッションを再開、**(6)**、クッキーを閉じて削除する。ですから、最初はCOOKIESESSION = TRUE、COOKIEJAR = cookiefilename、COOKIEFILE = cookiefilenameで始めるべきです。 COOKIESESSION = FALSE、COOKIEFILE =スクリプトのcookieilename、そしてスクリプト2ではCOOOKIESESSION = TRUEを使わないでそのまま続行しますか? – Ted

+0

ログインクッキーが実際にセッションクッキーか永続クッキーかどうかによって異なります。後者の場合は、COOKIESESSIONよりも助けにならないでしょう。安全にするために、スクリプト1で起動する前にクッキーファイルの内容をクリアするだけで済みます。あるいは、ログアウトURLを押すことでスクリプト2が問題のサイトを実際にログアウトさせることもできます。私はスクリプト1とスクリプト2の両方でCOOKIEFILEとCOOKIEJARの両方を指定すると思います。そうすれば、script2がリクエストを行うと、クッキーの変更がファイルに保存されるようになります。 COOKIESESSIONもデフォルトではfalseです。 – drew010

+0

は連続しています。スクリプト2が終了した後、私はunlinkを使ってcookieを削除します。私はそれがセッションクッキーであると言うことができると思う:PHPSESSID。そうです。私が以前に言ったことは、(最初​​はCOOKIESESSION = TRUE、残りはFALSE)本当ですか? – Ted

関連する問題