欢迎来到天天文库
浏览记录
ID:9536424
大小:60.00 KB
页数:4页
时间:2018-05-03
《嵌入式linux系统cgi程序设计技术》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、嵌入式Linux系统CGI程序设计技术摘要:在详细介绍一种嵌入式DocumentRoot/home/httpdscriptAlias/cgi-bin/home/httpd/cgi-bin/scriptAlias/index.html/home/httpd/index.html它指定了HTML页面必须放到/home/httpd目录下,cgi外部扩展程序必须放到/home/httpd/cgi-bin目录下。(3)编译烧写内核重新编译内核后,通过烧写工具烧写内核,就可以在PC上通过IE浏览器访问开发板上的MU平台的Linux下B0A
2、的实现与配置对于有MMU(内存管理单元)的平台,如armlinux和ppclinux,可以到网上下载一个主流版本的boa发行包。因为是运行在目标系统,所以要用交叉编译工具编译,即需要修改boa/src/Makefile里面的编译器。例如:CC=/LinuxPPC/CDK/bin/poake,即可生成BOA可执行文件;将其编译入内核,并烧写到存储设备,就可以实现访问BOA服务器。3CGI程序设计技术CGI(monGatep;”字符连接在一起。经过这些编码处理之后,表单信号就整个成为一个连续的字符流,里面包含着将被送往服务器的全部
3、信息。因为表单输入信息都是经过编码后传递给脚本程序的,所以CGI扩展程序在使用这些参数之前必须对它们进行解码。3.2CGI外部扩展程序编制服务器程序可以通过三种途径接收信息:环境变量、命令行和标准输入。具体使用哪一种方法要由<FORM>标签的METHOD属性来决定。在“METHOD=GET”时,向CGI程序传递表单编码信息的正常做法是通过命令来进行的。大多数表单编码信息都是通过QUERY_STRING的环境变量来传递的。如果“METHOD=POST”,表单信息将通过标准输入来读取。还有一种不使用表单就可以向CGI传
4、送信息的方法,那就是把信息直接追回在URL地址后面,信息和URL之间用问号(?)来分隔。下面结合芯片的GPIO(通用输入/输出)的应用实例详细介绍。(1)GET方法GET方法是对数据的一个请求,被用于获得静态文档。当使用GET方法时,CGI程序将会从环境变量QUERY_STRING获取数据。为了处理客户端的请求,CGI必须对QUERY_STRING中的字符串进行分析。当需要从服务器获取数据并且不改变服务器上的数据时,应该选用GET方法;但是如果请求中包含的字符串超过了一定长度,一般是1024字节,那么就只能选用POST方法。G
5、ET方法通过附加在URL后面的参数发送请求信息。这些参数将被放在环境变量QUERY_STRING中传给CGI程序。GET方法的表单格式和CGI解码程序可以参考POST方法的实现。(2)POST方法当浏览器将数据从一个填写的表单传给服务器时一般采用POST方法,而且在发送的数据超过1024字节时也必须采用POST方法。当使用POST方法时,ETHOD环境变量以确定是否采用了POST方法,并决定是否要读取STDIN。POST方法在HTML文档中定义的表单如下:<FORMMETHOD=POSTACTION="/cgi-bin/
6、cgi_gpio.cgi"><INPUTTYPE="RADIO"NAME=rbvalue="0">OperateP0<BR><INPUTTYPE="RADIO"NAME=rbvalue="1">OperateP1<BR><INPUTTYPE="RADIO"NAME=rbvalue="2">OperateP2<BR><INPUTNAME="ok"TYPE=submitvalue="OK"><INPUT>NAME="cancel"
7、TYPE=resetvalue="RESET"></FORM>它调用的服务器脚本程序是/cgi/bin/cgi_gpio.cgi。CGI扩展程序中FORM表单的解码可参考如下程序:/*functiongetPOSTvars*/char**getPOSTvars(){inti;intcontent_length;char**postvars;char*postinput;char**pairlist;intpaircount=0;chr*nvpair;char*eqpos;postinput=getenv("C
8、ONTENT_LENGTH");//获取传送给程序数据的字节数if(!postinput)exit();if(!content_length=atoi(postinput)))//获取信息长度exit(1);if(!(postinput=(char*)malloc(conte
此文档下载收益归作者所有