PHP Curl을 사용하여 HTTP 인증 수행

Subodh Poudel 2023년6월20일
  1. php-curl 소개
  2. Ubuntu에 php-curl 라이브러리 설치
  3. HTML 양식에서 기본 HTTP 인증 수행
  4. cURL을 사용하여 기본 HTTP 인증 수행
PHP Curl을 사용하여 HTTP 인증 수행

이 튜토리얼은 Ubuntu에서 PHP cURL을 사용하여 HTTP 인증을 수행하는 방법을 보여줍니다.

php-curl 소개

cURL(클라이언트 URL)은 데이터와 파일을 보내거나 받는 명령줄 유틸리티입니다. URL 구문을 사용하고 FTP, FTPS, DICT, HTTP, HTTPS 등과 같은 프로토콜을 지원합니다.

cURL 라이브러리는 php-curl이라는 PHP에서 사용할 수 있습니다. 이 라이브러리를 사용하여 PHP에서 HTTP 요청을 보내 서버와 통신할 수 있습니다.

쿠키 설정, 프록시 사용, SSL 연결을 통한 데이터 전달, php-curl을 사용한 인증과 같은 다양한 작업을 수행할 수 있습니다.

기본 php-curl 기능을 살펴보겠습니다.

  1. curl_init() - cURL 세션을 초기화합니다.

  2. curl_close() - cURL 세션을 닫습니다.

  3. curl_setopt(handle, option, value) - cURL 세션에 대한 옵션을 설정합니다. 여기서 handlecurl_init()에 의해 반환된 값입니다.

    option 매개변수는 다양한 옵션 값을 가질 수 있습니다. 옵션 목록은 여기에서 확인할 수 있습니다.

    필요에 따라 사용합니다. value 매개변수에는 옵션에 대한 값이 있습니다.

  4. curl_exec() - 미리 정의된 cURL 세션을 실행합니다.

Ubuntu에 php-curl 라이브러리 설치

인증을 수행하기 전에 시스템에 php-curl이 설치되어 있는지 확인해야 합니다. 다음 명령으로 할 수 있습니다.

php -m

이 명령은 컴파일된 PHP 모듈을 나열합니다. 목록에서 curl을 찾을 수 있으면 php-curl이 설치된 것입니다.

phpinfo() 함수의 출력을 확인하여 설치를 확인할 수도 있습니다. 설치된 경우 curl에 대한 테이블이 출력에 나타납니다.

php-curl이 설치되어 있지 않은 경우 다음 명령을 통해 설치할 수 있습니다.

sudo apt-get install php-curl

설치 후 php.ini 파일을 열고 아래 줄을 찾습니다.

;extension=curl

아래와 같이 위 줄의 주석을 해제합니다.

extension=curl

마지막 단계는 이러한 명령 중 하나를 사용하여 서버를 다시 시작하는 것입니다.

sudo systemctl start apache2
sudo /etc/init.d/apache2 start

HTML 양식에서 기본 HTTP 인증 수행

먼저 HTTP POST 방식만을 사용하여 기본 인증을 수행합니다. 사용자 이름과 비밀번호를 허용하는 HTML 로그인 양식을 생성합니다.

미리 정의된 로그인 자격 증명 집합으로 사용자 입력을 확인합니다. 다음으로 cURL 메소드를 사용하여 HTTP 인증을 수행합니다.

예를 들어 /var/www/htmlcurl 디렉토리를 만든 다음 login.php 파일을 만듭니다. PHP 파일에서 HTML을 사용하여 로그인 양식을 작성하십시오.

아래 예와 같이 사용자 이름과 비밀번호에 대해 name 속성을 unamepass로 작성합니다.

코드 예:

<form action="login.php" method="post">
  <input type="text" placeholder="Enter Username" name="uname" required><br>
  <input type="password" placeholder="Enter Password" name="pass" required><br>
  <button type="submit" >Login</button>
</form>

다음으로 PHP 태그를 열고 isset() 함수를 사용하여 사용자 이름과 비밀번호가 user123password123과 같은지 확인합니다. 아래 예와 같이 if 조건을 사용하여 그에 따라 메시지를 표시합니다.

if(isset($_POST['uname'])&& isset($_POST['pass']))
   if($_POST['uname']=='user123' && $_POST['pass']=='password123'){
       echo "login successful";
   }
   else{
       echo "login failed";
   }

이제 서버에서 파일을 열고 다음과 같이 로그인 자격 증명을 입력합니다.

username=user123
password=password123

출력:

로그인 양식 - html

아래와 같이 요소 검사 옵션의 네트워크 탭에서 HTTP 요청을 확인할 수 있습니다.

요소 검사

양식에 잘못된 자격 증명을 제출하여 로그인 실패 메시지를 표시하여 인증을 테스트할 수 있습니다. 위의 그림과 같이 요청 탭에서도 잘못된 자격 증명을 볼 수 있습니다.

cURL을 사용하여 기본 HTTP 인증 수행

위에 나열된 cURL 방법을 사용하여 HTTP 인증을 수행할 수 있습니다. 먼저 서버에 HTTP 요청을 보낼 페이로드를 생성해야 합니다.

예를 들어 curl 디렉토리 안에 post.php 파일을 만듭니다. 아래와 같이 PHP 파일에서 $data 배열을 만들고 올바른 로그인 자격 증명을 저장합니다.

$data = array(
    "uname" => "user123",
    "pass" => "password123",
    "form" => "submit"
);

다음으로 cURL 세션을 저장할 변수 ch를 만듭니다. http://localhost/curl/login.php URL이 있는 curl_init() 함수를 ch에 할당합니다.

그런 다음 curl_setopt() 함수를 사용하여 cURL 세션에 대한 다양한 옵션을 설정합니다. CURLOPT_FOLLOWLOCATION, CURLOPT_POSTCURLOPT_RETURNTRANSFERTRUE로 설정합니다.

CURLOPT_POSTFIELDS 옵션에 페이로드 $data를 제공하십시오. CURLOPT_COOKIEJAR 옵션의 경우 쿠키 파일 이름 cookie.txt를 작성합니다.

프로젝트 디렉터리에 쿠키를 저장하려면 빈 cookie.txt 파일을 만들어야 합니다.

  1. http://localhost/curl/login.phpcURL과 함께 요청을 보내는 대상 URL입니다.
  2. TRUE로 설정된 CURLOPT_FOLLOWLOCATION 옵션은 Location: header()에 의해 리디렉션되는 모든 헤더 위치를 따릅니다.
  3. CURLOPT_POST 옵션이 TRUE로 설정되면 서버에 대한 POST 요청임을 세션에 알립니다.
  4. CURLOPT_POSTFIELDS 옵션은 요청에서 보낸 페이로드를 정의합니다.
  5. CURLOPT_COOKIEJAR 옵션은 cURL 세션이 닫힌 후 cookie.txt 파일에 쿠키를 저장합니다.
  6. CURLOPT_RETURNTRANSFER 옵션을 TRUE로 설정하면 직접 입력하는 대신 curl_exec()의 응답을 반환합니다.

마지막으로 ch를 매개변수로 사용하여 cURL 세션을 실행하고 curl_close()로 세션을 종료하는 curl_exec() 함수를 작성합니다. 마지막으로 출력 curl_exec() 함수를 표시합니다.

코드 예:

$ch = curl_init('http://localhost/curl/login.php');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$result = curl_exec($ch);
curl_close($ch);
echo $result;

그런 다음 post.php 스크립트를 실행합니다. 자격 증명이 페이로드에서 정확하므로 다음 출력이 수신됩니다.

로그인 양식 - curl

잘못된 자격 증명을 사용하면 출력에 로그인 실패라고 표시됩니다.

따라서 이 튜토리얼에서는 PHP에서 기본적인 cURL 인증을 수행하는 방법을 보여주었습니다.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

관련 문장 - PHP Curl