現在の位置: ホーム> 最新記事一覧> リクエスト間で認証ステータスとログインセッションを共有する方法

リクエスト間で認証ステータスとログインセッションを共有する方法

M66 2025-05-24

curl_share_init()は、php curl拡張機能によって提供される関数です。このオブジェクトを使用すると、異なるCurlリクエスト間でセッションデータを共有できます。特に、認証を必要とするリクエストを作成する場合、この共有セッションデータは、重複するログイン操作を大幅に削減し、プログラムの効率を向上させることができます。

 $ch_share = curl_share_init();

上記のコードは、共有リソースオブジェクト$ ch_shareを初期化します。これは、複数のカールセッションに関連付けて情報を共有できます。

2。curl_share_setopt ()を使用して共有オプションを設定します

共有オブジェクトを作成したら、 curl_share_setopt()を介して共有する必要がある情報を設定できます。普通のデータは次のとおりです。

  • curl_share_cookie :共有クッキー

  • curl_share_header :ヘッダー情報を共有します

  • curl_share_request :リクエスト情報を共有します

curl_share_setopt($ch_share, CURL_SHARE_COOKIE, true);

上記の設定では、複数のリクエストがCookieデータを共有できます。これは、ログインステータスを維持するために不可欠です。

3.複数のカールリクエストでセッションを共有します

共有オブジェクトが初期化され、関連するオプションが設定されたら、この共有リソースをさまざまなCurlリクエストで使用できます。まず、複数のカールセッションを作成し、共有リソースオブジェクトを各セッションにバインドします。

 $ch1 = curl_init();
$ch2 = curl_init();

// 共有リソースをにバインドします cURL セッション
curl_setopt($ch1, CURLOPT_SHARE, $ch_share);
curl_setopt($ch2, CURLOPT_SHARE, $ch_share);

// リクエストされたセット URL(実際のリクエストに置き換えます)
curl_setopt($ch1, CURLOPT_URL, 'https://m66.net/api/login');
curl_setopt($ch2, CURLOPT_URL, 'https://m66.net/api/data');

// リクエストを実行します
curl_exec($ch1);
curl_exec($ch2);

// 关闭セッション
curl_close($ch1);
curl_close($ch2);

上記の例では、 $ CH1および$ CH2は認証ステータスとCookie情報を共有するため、両方とも同じログインセッションを使用できます。

4.共有リソースをリリースします

すべてのカールセッションが完了したら、メモリリークを避けるために共有リソースを解放することを忘れないでください。

 curl_share_close($ch_share);

5。使用の例:共有認証ステータス

ログイン後に複数のAPIエンドポイントにアクセスし、ログインしたままにする必要があるとします。Curl_share_init ()およびcurl_share_setopt()を介して認証ステータスとCookie情報を共有できます。ここに完全な例があります:

 <?php
// 共有リソースを初期化します
$ch_share = curl_share_init();

// 共有オプションを設定します(共有 Cookie)
curl_share_setopt($ch_share, CURL_SHARE_COOKIE, true);

// 最初のものを作成します cURL セッション(ログインリクエスト)
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_SHARE, $ch_share);
curl_setopt($ch1, CURLOPT_URL, 'https://m66.net/api/login');
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_POST, true);
curl_setopt($ch1, CURLOPT_POSTFIELDS, [
    'username' => 'your_username',
    'password' => 'your_password'
]);

// 执行ログインリクエスト
$response1 = curl_exec($ch1);

// 秒を作成します cURL セッション(データを取得します)
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_SHARE, $ch_share);
curl_setopt($ch2, CURLOPT_URL, 'https://m66.net/api/userdata');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);

// データリクエストを実行します
$response2 = curl_exec($ch2);

// 出力結果
echo $response1;
echo $response2;

// 关闭セッション
curl_close($ch1);
curl_close($ch2);

// 释放共有资源
curl_share_close($ch_share);
?>

この例では、ログイン要求とデータリクエストは認証ステータスとCookieを共有するため、重複するログイン操作を回避できます。

要約します

curl_share_init()およびcurl_share_setopt()を使用すると、複数のCurl要求間で認証ステータスとセッション情報を共有することができ、複数のリクエストが効率を大幅に改善できます。複雑なAPIが呼び出されるシナリオまたはログインし続ける必要がある場合、この方法は、開発者が不必要な重複認証操作を減らし、時間とリソースを節約するのに役立ちます。