차이점: CGI는 언어가 아닌 프로토콜 및 표준이며 사양입니다. 이 표준을 따르면 다양한 언어(PHP 포함)로 프로그램을 작성하여 웹 페이지 요청을 처리하고 데이터를 클라이언트 브라우저에 반환할 수 있습니다. PHP는 동적 웹 개발 언어입니다. PHP는 CGI 모드나 ISAPI 및 NSAPI와 같은 모듈에서 작동할 수 있습니다.
CGI는 범용 게이트웨이 프로토콜이자 동적 웹 페이지 개발을 위한 표준입니다 이 표준을 따르면 BAT, CMD, sh, PERL, C, C++, PERL 및 PHP를 사용하여 프로그램을 작성할 수 있습니다. 웹페이지 요청을 처리하고 클라이언트 브라우저에 데이터를 반환합니다. CGI는 언어가 아닌 프로토콜이자 표준이며 사양입니다.
cgi는 인터페이스입니다. 어떤 언어를 사용하든 이 인터페이스에 따라 구현할 수 있습니다. 일반적으로 서버는 cgi 프로그램을 호출해야 한다고 결정하기 전에 요청된 GET 매개변수를 환경 변수 QUERY_STRING에 배치하고 POST 요청 내용은 표준 입력 스트림을 통해 cgi 프로그램으로 전송됩니다. cgi 프로그램은 HTTP 프로토콜(HTTP 헤더 및 HTTP 본문 포함)을 표준 출력 스트림 stdout으로 인쇄하기만 하면 되며 서버는 이를 브라우저에 직접 전송합니다.
//c++实现cgi接口,打印query string和post data #include <iostream> using namespace std; int main() { cout << "Content-type:text/html\n\n"; const char *queryString = getenv("QUERY_STRING"); if (queryString != NULL) { cout << "<h1>query string is :" << queryString << "</h1>" << endl; } else { cout << "<p>No query string</p>" << endl; } string postData, tmpData; while(cin >> tmpData) { postData += tmpData; } if (postData != "") { cout << "<div> " << postData << " </div>" << endl; } else { cout << "<p>No post data</p>" << endl; } return 0; }
컴파일하고 이름을 test.cgi로 지정한 다음 서버의 cgi 디렉터리에 넣습니다. 그런 다음 http://localhost/cgi/test.cgi?a=b&c=d와 유사한 URL에 액세스하면 서버는 a=b&c=d를 QUERY_STRING 환경 변수에 넣고 이를 test.cgi에 전달합니다. 마지막으로 쿼리 문자열이 a=b&c=d인 것을 페이지에 표시하는 것을 볼 수 있습니다. 또한 http://localhost/cgi/test.cgi에 대한 양식과 POST 데이터를 생성할 수 있으며, 그러면 페이지에 표시된 모든 POST 데이터를 볼 수 있습니다.
PHP는 주로 브라우저에서 제출된 데이터를 처리하고 결과를 브라우저에 반환하는 데 사용되는 동적 웹 개발 언어입니다. PHP는 CGI 모드나 ISAPI, NSAPI와 같은 모듈에서 작동할 수 있습니다.
PHP로 CGI 프로그램 작성:
#!/usr/env php <?php echo "Content-type:text/html\n\n"; $queryString = $_ENV("QUERY_STRING"); if ($queryString != NULL) { echo "<h1>query string is : $queryString</h1>"; } else { echo "<p>No query string</p>"; } $postData = file_get_contents("php://stdin"); if ($postData != "") { echo "<div> $postData </div>"; } else { echo "<p>No post data</p>"; } ?>
좋아, 그 기능은 위의 C++로 작성된 프로그램과 정확히 동일합니다. chmod +x testphp.cgi에 "실행 가능 속성"을 추가한 다음 cgi 디렉토리로 이동한 다음 http://localhost/cgi/testphp.cgi?a=b&c=d를 방문하고 여기에 양식 게시 데이터를 사용하면 효과는 동일해야 합니다.
그래서 서버가 CGI 프로그램을 호출할 때 이를 구현하는 데 무엇을 사용하든 상관하지 않는다는 것도 보셨을 겁니다. 어쨌든 인터페이스는 이미 설정되어 있으므로 인터페이스에 따라 프로그래밍하면 됩니다.
그러나 일반적으로 PHP를 호출하는 서버의 논리와 CGI 프로그램을 호출하는 논리는 다릅니다. CGI 프로그램은 QUERY_STRING 및 POST_DATA를 자체적으로 구문 분석해야 합니다. PHP는 다른 확장 세트를 통해 서버와 상호 작용해야 합니다. 따라서 웹 페이지를 직접 작성하기 위해 PHP를 사용하는 경우 웹 페이지를 작성하는 방식은 평소와 다릅니다. 서버의 PHP 확장 기능을 사용하면 쿼리 문자열을 구문 분석하고 데이터를 배열에 게시할 수 있습니다.
<?php if (isset($_GET)) { print_r($_GET); } else { echo "<p>No query string</p>"; } if (isset($_POST)) { print_r($_POST); } else { echo "<p>No post data</p>"; } ?>
test.php로 저장한 다음 http://localhost/test.php를 방문하세요. a=b&c=d, 또는 양식이 페이지에 콘텐츠를 제출합니다. 출력 데이터가 구조화되어 배열이 된 것을 볼 수 있습니다. 게다가 더 이상 HTTP 헤더를 직접 출력할 필요가 없습니다(특별한 상황을 제외하고).
더 많은 관련 지식을 보려면 PHP 중국어 웹사이트를 방문하세요!
위 내용은 CGI와 PHP의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!