[PHP] 내가 처음 만든 HTTP 웹서비스 함수 ... 함수 코드와 호출하는 코드 포함
2025. 1. 16. 16:35ㆍHTML 공부
처음 만든 웹서비스를 공개한다.
<?php $conn = new mysqli(localhost,'','',''); $conn->set_charset("utf8"); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $a_value = $_GET['a']; $sql = "SELECT domain FROM b WHERE s='$a_value'"; $result = $conn->query($sql); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); echo $row['domain']; } else { echo "No result"; } $conn->close(); ?> |
브라우저에서 호출해 보니 성공이다.
wizneth.cafe24.com/n10/?a=a2 |
이번엔 클라이언트 프로그램을 작성해서 호출해 보았다.
<?php $a_value = "a2"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://wizneth.cafe24.com/n10/?a=" . $a_value); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $response = curl_exec($ch); if(curl_errno($ch)){ echo 'Curl error: ' . curl_error($ch); } curl_close($ch); echo "Result: " . $response; ?> |
결과가 잘 나온다.
이런 식으로 나의 DB 나 여러가지 내용을 웹서비스로 오픈할 수 있다.
자기가 만든 시스템의 내용을 외부로 서비스 할 수 있다.
이러면, 필요하면 유료로 이용하게끔 할 수도 있다.
여러가지 biiling 모델을 만들 수 있다.
다른 회사의 Open API 정책을 흉내내서 만들면 된다.
한달에 1000원이라던지, 한번 호출하면 10원이라던지...
계정당 10번까지는 무료라던지...
모두 프로그램 하기에 달렸다.
아래 코드를 사용해도 된다고 합니다.
<?php // PHP에 openssl 확장이 설치되어 있는지 확인 if (!extension_loaded('openssl')) { die('OpenSSL 확장이 필요합니다'); } $a_value = "a2"; $opts = array( 'http'=>array( 'header'=>"User-Agent: Mozilla/5.0" ), 'ssl'=>array( 'verify_peer'=>false, 'verify_peer_name'=>false, ) ); $context = stream_context_create($opts); $response = file_get_contents("https://wizneth.cafe24.com/n10/?a=" . $a_value, false, $context); echo "Result: " . $response; ?> |
HTTPS 라서 아래와 같이 프로그램해서 호출하면 에러가 난다고 합니다.
<?php $a_value = "a2"; // 조회하려는 A 컬럼의 값 $response = file_get_contents("https://wizneth.cafe24.com/n10/?a=" . $a_value); if ($response === FALSE) { echo "Error: " . error_get_last()['message']; } else { echo "Result: " . $response; } ?> |
에러가 나는 이유는 아래와 같습니다 .
Error: file_get_contents(https://wizneth.cafe24.com/n10/?a=a2): failed to open stream: no suitable wrapper could be found |
file_get_contents() 함수가 HTTPS URL에 접근할 때 발생한 에러의 원인을 설명하면
PHP 내부적인 이유
- file_get_contents()는 URL을 열 때 'wrapper'라는 특별한 핸들러가 필요
- HTTPS 프로토콜을 처리하기 위해서는 OpenSSL wrapper가 필요
- OpenSSL이 설치되지 않았거나 활성화되지 않으면 "no suitable wrapper" 에러 발생
보안 관련 이유
- HTTPS는 SSL/TLS 인증서 검증이 필요
- 기본 PHP 설정에서는 보안상의 이유로 이러한 접근이 제한될 수 있음
cURL이 되는 이유
- cURL은 자체적인 SSL/TLS 처리 기능 포함
- 더 유연한 네트워크 프로토콜 지원
- 보안 인증서 검증 옵션을 쉽게 제어 가능
이런 이유로 웹 요청 시에는 일반적으로 file_get_contents() 보다 cURL 사용을 권장합니다.
'HTML 공부' 카테고리의 다른 글
JSON 과 XML 의 장단점 (0) | 2025.01.16 |
---|---|
자바 스크립트과 php 로 각각 강제로 URL 리다이렉트 하는 코드 (0) | 2024.12.30 |
티스토리 블로그에 react 이용하여 마우스로 점찍기 (1) | 2024.12.30 |
티스토리에 react 이용하여 파이차트 그리기 (0) | 2024.12.30 |
티스토리에 react 반영하기 연습 (2) | 2024.12.30 |