HTML与cgi post传递与接收,CGI实例--表单GET与POST示例

CGI概述

CGI(Common Gateway Interface: 公用网关接口)规定了Web服务器调用其他可执行程序(CGI程 序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互, 也就是CGI程序通过读标准输入,接受Web浏览器发送给Web服务器的信息, 进行处理, 将响应结果再通过标准输出回送给Web服务器, 然后经过http协议返回给Web浏览器。

CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工作。CGI程序可以用任何程序设计语言编写,如Shell脚本语言、Perl、Fortran、Pascal、C语言等。但是用C语言编写的CGI程序具有执行速度快、安全性高(因为C语言程序是编译执行且不可被修改)等特点。

CGI接口标准包括标准输入、环境变量、标准输出三部分。

38b392d868f712d2ff50e69c88382600.png

HTML表单(Form)是HTML的一个重要部分,主要用于采集和提交用户输入的信息。

举个简单的例子,一个让用户输入姓名的HTML表单(Form)。示例代码如下:

action="*.cgi" method="get">

Please input your

name:

type="text" name="yourname">

type="submit" value="login">

学习HTML表单(Form)最关键要掌握的有三个要点:

表单控件(Form Controls)

Action

Method

先说表单控件(Form Controls),通过HTML表单的各种控件,用户可以输入文字信息,或者从选项中选择,以及做提交的操作。比如上面的例句里,input type= "text"就是一个表单控件,表示一个单行输入框。

用户填入表单的信息总是需要程序来进行处理,表单里的action就指明了处理表单信息的文件。比如上面例句里的*.CGI。

至于method,表示了发送表单信息的方式。method有两个值:get和post。get的方式是将表单控件的name/value信息经过编码之后,通过URL发送(你可以在地址栏里看到)。而post则将表单的内容通过http发送,你在地址栏看不到表单的提交信息。那什么时候用get,什么时候用post呢?一般是这样来判断的,如果只是为取得和显示数据,用get;一旦涉及数据的保存和更新,那么建议用post。

GET方法:做一个加法运算,需要接收两个参数

文件get.c如下:

#include

#include

int main(void)

{

char *data;

char a[10],b[10];

printf("Content-Type:text/html\n\n");

printf("\n");

printf("

\nGet Method\n\n");

printf("

\n");

printf("

\n");

data = getenv("QUERY_STRING");

if(sscanf(data,"a=%[^&]&b=%s",a,b)!=2){

printf("

Error parameters should be entered!
\n");

}

else{

printf("

a + b = %d
\n",atoi(a)+atoi(b));

}

printf("


");

printf("");

printf("

\n");

printf("\n");

printf("\n");

return 0;

}

POST方法:做一个乘法运算,需要接收两个参数

文件post.c如下:

#include

#include

int main(void){

int len;

char *lenstr,poststr[20];

char m[10],n[10];

printf("Content-Type:text/html\n\n");

printf("\n");

printf("

\npost Method\n\n");

printf("

\n");

printf("

\n");

lenstr=getenv("CONTENT_LENGTH");

if(lenstr == NULL)

printf("

Error parameters should be entered!
\n");

else{

len=atoi(lenstr);

fgets(poststr,len+1,stdin);

if(sscanf(poststr,"m=%[^&]&n=%s",m,n)!=2){

printf("

Error: Parameters are not right!
\n");

}

else{

printf("

m * n = %d
\n",atoi(m)*atoi(n));

}

}

printf("


");

printf("");

printf("

\n");

printf("\n");

printf("\n");

fflush(stdout);

return 0;

}

再附上html测试文件cgi.html:

CGI Testing
Method: GET
please input two number:

+

=

Method: POST
please input two number:

*

=

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue横向树结构_vue树形结构的实现

1. 主要代码使用单文件组件的方式, 需要一个父组件treeMenu, 和子组件treeItem1.1 父组件treeMenu.vue:nodes"treeData">export default {name: treeMenu,data: () > {return {treeData: {label: china,nodes: [{label: hubei,nodes: [{label: wuhan},{label: …

cesium js 路径_vue2.0项目集成Cesium的实现方法

安装cesium在已有项目中执行,npm i cesium修改配置build/webpack.base.conf.js1、定义 Cesium 源码路径const cesiumSource ../node_modules/cesium/Sourceuse strictconst path require(path)const utils require(./utils)const config require(../config)const vueLoader…

pytorch模型加载测试_pytorch模型加载方法汇总

Pytorch有很多方便易用的包,今天要谈的是torchvision包,它包括3个子包,分别是: torchvison.datasets ,torchvision.models ,torchvision.transforms ,分别是预定义好的数据集(比如MNIST、CIFAR1…

android studio聊天跳转_Android 第三方应用跳转到QQ进行聊天

跳转QQ聊天代码十分简单&#xff1a;//获取包信息public static booleanisQQClientAvailable(Context context) {finalPackageManager packageManager context.getPackageManager();List pinfo packageManager.getInstalledPackages(0);if(pinfo !null) {for(inti 0;i < p…

html字体闪烁模板,CSS+JS阴影闪烁文字

阴影闪烁文字.F1 {filter: glow(Color#FF8000,Strength10);width150px;height200px;}.F2 {filter: glow(Color#00FF00,Strength9);width110px;height200px;}.F3 {filter: glow(Color#0080FF,Strength12);width90px;height200px;}var rate 500var i 0var F F1function doThin…

html 规定换行,HTML 换行

css3整理--clipclip语法: .selector { clip: rect | auto | inherit } 注意:clip属性只能在元素设置了“position:absolute”或者“position:fi ...Android 边框圆角RelativeLayout 圆角实现: drawable目录下面定义shape的xml文件: mall_header_rel_bg.xml <?xml version&…

qt执行命令行失败_QT缺少 qtcore4.dll,debug下运行不成功

刚装QT的时候&#xff0c;好像我的环境变量没有设置好&#xff0c;哎&#xff0c;。隐患终于爆发了。在VS下运行成功的QT程序&#xff0c;然后点击Debug下的.exe&#xff0c;老提示缺少Qtcore4.dll&#xff0c;当时正郁闷之极&#xff0c;忘了怎样在网页上查找&#xff0c;只是…

伪类如何动态在html设置样式,用js实现before和after伪类的样式修改的示例代码

本文介绍了使用javascript,jQuery实现修改before,after伪类的样式&#xff0c;分享给大家&#xff0c;具体如下&#xff1a;最近遇到一个需要改变:before,:after 伪类的样式&#xff0c;发现css中并不能直接选择某一个元素的:before和:after伪类元素&#xff0c;所以特总结了使…

html 图片平移动画,CSS3 圆圈内图片的自动平移/旋转动画

CSS语言&#xff1a;CSSSCSS确定body {background: #fbfbfb;}.spinner {width: 155px;height: 155px;border-radius: 100%;background-color: #d8d8d8;border: 10px solid #575757;position: absolute;top: 50%;left: 50%;transform: translateX(-50%) translateY(-50%) transl…

layui option 动态添加_layui select动态添加option的实例

html产品类别轻松融容易融快乐融增加产品类别js//重新渲染表单function renderForm(){layui.use(form, function(){var form layui.form();//高版本建议把括号去掉&#xff0c;有的低版本&#xff0c;需要加()form.render();});}//增加产品类别按钮点击事件function addProduc…

html鼠标滑轮换图片,JavaScript实现鼠标滚轮控制页面图片切换

鼠标上的滚轮是一个不错的东东&#xff0c;为什么这么说&#xff0c;因为它能帮助我们快速的浏览网页,快速的进行长篇文章的阅读。对于web前端的我们来说又怎么能不注重这个鼠标滚轮呢&#xff0c;那么它能如何让用户更好的浏览网页呢&#xff1f;本文主要介绍JavaScript实现鼠…

html无法引入less样式,@import less样式文件 只有css样式生效, less样式却不生效

使用webp享。发概程间告屏会。一控近到都从述序也问ack构建项目时 import less文件时 为什么只有文件里面css样式生效&#xff0c; less样式却不生支器事的后功发久这含层请间业在屏有随些气和域&#xff0c;实按控幻近持的前时来能过后些的处求也务浏蔽等机站风滚或默现钮制灯…

minio存储类型 归档管理页面_minio分布式存储系列(一)__介绍及开箱使用

minio分布式存储系列(一)__介绍及开箱使用简介&#xff1a;Minio 是一个基于Go语言编写的对象存储服务。它兼容亚马逊S3云存储服务接口&#xff0c;可以理解为是S3的开源版本(亚马逊S3&#xff1a;专为从任意位置存储和检索任意数量的数据而构建的对象存储&#xff0c;官网地址…

电脑视频html5全屏掉帧,Windows 10使用自带的电影和电视全屏看视频时掉帧(画面卡顿)...

Windows 10自带的“电影和电视”应用能应付一些常见的视频格式&#xff0c;还能播放360度全景视频&#xff0c;对部分人来说用它就够了&#xff0c;不需要额外安装其它播放视频的应用。在使用电影和电视全屏播放视频的过程中&#xff0c;部分人可能会出现掉帧情况&#xff0c;画…

hadoop job 数量_Hadoop job任务分配

1. 必要性Hadoop提供了多个配置参数使得admin和user可以灵活设定内存&#xff1b;有些参数有defaut-value, 有些选项是cluster specific以支持memory-intensive作业。当构建一个cluster时&#xff0c;admin可以先设定一些appropriate default value&#xff1b;其他一些参数设定…

计量经济学计算机输出结果,计量经济学作业答案A..doc

计量经济学作业答案A.计量经济学(本科)第一次作业(First Assignment) 答案问题1某一元回归模型y ?0 ?1 x u 中 ?1 的估计量(OLS法-最小二乘法)用表示。检验 ?1 0的t统计量定义为 t &#xff0c;其中S()为的样本标准差(Standard Error)。问题&#xff1a;1) 请找出t统计…

均值滤波器类型_均值滤波适用于处理什么样的噪声

图像降噪是图像处理中的专业术语。在现实生活中&#xff0c;我们看到的数字图像&#xff0c;在数字化和传输过程中由于常受到成像设备与外部环境噪声干扰等影响&#xff0c;把这些图像称为含噪图像或者叫噪声图像。减少数字图像中噪声的过程称为图像降噪,有时候又称为图像去噪。…

采用计算机发布调度命令时 必须严格遵守,实用文档其他之铁路调度命令格式图片调度命令规范格式...

铁路调度命令格式图片调度命令规范格式一、发布行车调度命令的原则1.指挥列车运行的命令和口头指示&#xff0c;只能由列车调度员发布。旅客列车的加开、停运、折返、变更径路及车辆甩挂的命令&#xff0c;经铁道部、铁路局客运调度分别报告值班处长、值班主任同意签字后&#…

c3p0 参数 模糊查询_Hibernate day03笔记

Hibernate的关联关系映射:(多对多)多对多的配置:步骤一创建实体和映射:Student:public class Student {private Integer sid;private String sname;//学生选择多门课程.private Set courses new HashSet();...}Course:public class Course {private Integer cid;private Strin…

微型计算机实验四答案,微型计算机技术实验指导书的答案.doc

微型计算机技术实验指导书的答案3、设计要求&#xff1a;(1)在数据段偏移地址为1000H处开始&#xff0c;连续存放有3字节数据(高位对应高地址&#xff0c;低位对应低地址)1003H处连续存放2字节的数据(高位对应高地址&#xff0c;低位对应低地址)&#xff0c;求两个数据之和。并…