현재 위치: > 최신 기사 목록> 요청 간 인증 상태 및 로그인 세션을 공유하는 방법

요청 간 인증 상태 및 로그인 세션을 공유하는 방법

M66 2025-05-24

Curl_share_init () 는 PHP Curl Extension에서 제공하는 함수입니다. 이 객체를 사용하면 다른 컬 요청간에 세션 데이터를 공유 할 수 있습니다. 특히 인증이 필요한 요청을 할 때이 공유 세션 데이터는 중복 로그인 작업을 크게 줄이고 프로그램의 효율성을 향상시킬 수 있습니다.

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

위의 설정을 사용하면 여러 요청이 쿠키 데이터를 공유 할 수 있으며 이는 로그인 상태를 유지하는 데 필수적입니다.

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는 인증 상태 및 쿠키 정보를 공유하므로 동일한 로그인 세션을 사용할 수 있습니다.

4. 공유 리소스 릴리스

모든 컬 세션이 완료되면 메모리 누출을 피하기 위해 공유 리소스를 확보해야합니다.

 curl_share_close($ch_share);

5. 사용의 예 : 공유 인증 상태

로그인 한 후 여러 API 엔드 포인트에 액세스하고 로그인 한 상태를 유지해야한다고 가정합니다. CURL_SHARE_INIT ()CURL_SHARE_SETOPT ()를 통해 인증 상태 및 쿠키 정보를 공유 할 수 있습니다. 다음은 전체 예입니다.

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

이 예에서는 로그인 요청과 데이터 요청이 인증 상태 및 쿠키를 공유하므로 로그인 작업을 중복 할 수 있습니다.

요약

curl_share_init ()curl_share_setopt ()를 사용하면 여러 CURL 요청간에 인증 상태와 세션 정보를 공유하여 여러 요청이있을 때 효율성을 크게 향상시킬 수 있습니다. 복잡한 API가 호출되거나 로그인 해야하는 시나리오 에서이 방법을 사용하면 개발자가 불필요한 중복 인증 작업을 줄이고 시간과 리소스를 절약 할 수 있습니다.