cgi与php的区别是什么?

青灯夜游
发布: 2020-08-19 15:45:43
原创
2986人浏览过
区别:CGI是协议和标准,是一种规范,不是语言;遵循这个标准就可以用各种语言(包括PHP)编写程序处理网页请求和返回数据到客户端浏览器。而PHP是一个动态网页开发语言,PHP可以以CGI方式工作,也可以ISAPI、NSAPI等模块方式工作。

cgi与php的区别是什么?

CGI是通用网关协议,是开发动态网页的一个标准,遵循这个标准就可以用BAT、CMD、sh、PERL、C、C++、PERL以及PHP等语言编写程序处理网页请求和返回数据到客户端浏览器。CGI是协议和标准,是一种规范,不是语言。

cgi是一种接口,不管用什么语言都可以按照这个接口进行实现。一般服务器判断需要调用cgi程序前,会把请求的GET参数放在环境变量QUERY_STRING里,POST请求内容则通过标准输入流输送到cgi程序内。cgi程序只需要将HTTP协议(包括HTTP头和HTTP Body)打印到标准输出流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><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</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。最后能看到页面上显示出query string is a=b&c=d。也可以创建一个表单,把数据POST到http://localhost/cgi/test.cgi,然后可以看到页面上显示出所有的POST data。

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><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p>";
}
?>
登录后复制

好吧它的功能跟上面C++写的程序一毛一样,我们把它加上“可执行属性”chmod +x testphp.cgi然后扔到cgi目录,然后访问http://localhost/cgi/testphp.cgi?a=b&c=d,以及用表单post数据给它,看到的效果应该是一样的。

所以你也看到了,服务器调用CGI程序,它才不管你用啥实现的,反正接口都定好了,只要按接口来编程就行。

但一般服务器调用PHP和调用CGI程序的逻辑不一样。CGI程序需要自己解析QUERY_STRING和POST_DATA,PHP应该是通过另一套扩展跟服务器交互的,所以一般用PHP直接写网页的时候,写网页的方式跟平时还真不太一样,比如说,服务器的php扩展已经帮我们把query string和post data解析成了数组,我们直接取值就好了:

<?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><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p>";
}
?>
登录后复制

存成test.php之后访问http://localhost/test.php?a=b&c=d,或者表单提交内容到页面。可以看到输出的数据都是结构化的,已经变成数组了。而且,HTTP头也不需要我们自己输出了(特殊情况除外)。

更多相关知识,请访问:PHP中文网

以上就是cgi与php的区别是什么?的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号