boa web测试5:cgi 获取get提交的数据

15 篇文章 0 订阅
订阅专栏
文章讲述了如何通过环境变量QUERY_STRING获取GET方法传递的参数,并用C++进行解析。示例代码展示了使用sscanf和istringstream两种方式,指出后者在处理复杂字符串时更为有效。同时提供了一个HTML表单用于测试GET请求。
摘要由CSDN通过智能技术生成

一 原理和代码

原理,通过环境变量QUERY_STRING获取GET方法传递的参数 。

例如有如下URL,

http://192.168.31.138/cgi-bin/main.cgi?user_name=hello&user_password=world&submit=submit

那么环境变量的值就是?后面的字符串user_name=hello&user_password=world&submit=submit 

测试代码:

#include <iostream>
#include <string>
#include <stdio.h>
#include <sstream>
#include <string.h>

using namespace std;


int main(int argc,char *argv[])  
{  
    printf("Content-type:text/html\n\n"); //这句一定要加上
  string html_string = R"(
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        p{
            color:#0000ff
        }
        img{
            width: 300;
            height: 500px;
        }
    </style>
</head>
<body>
    <script>
        var cur_index = 0;
        document.write("0" + cur_index++ + ".jpg<br>");
        document.write("0" + cur_index++ + ".jpg<br>");
        document.write("0" + cur_index++ + ".jpg<br>");
        document.write("0" + cur_index++ + ".jpg<br>");
        document.write("0" + cur_index++ + ".jpg<br>");
    </script>
    <p>hello world!</p>
</body>
</html>)";
    cout << html_string << endl;
    printf("argc = %d\n",argc);
    for(int i = 0; i < argc;i++){
        printf("argv[%d]=%s\n",i,argv[i]);
    }
    printf("<br>");

    char *method_get_data = getenv("QUERY_STRING");
    if(!method_get_data){
        printf("no parameter\n");
    }
    else{
        printf("method_get_data = %s\n",method_get_data);
    }
    printf("<br>");
    char user_name[100];
    char user_password[100];
    char submit[100];
    sscanf(method_get_data,"user_name=%s&user_password=%s",user_name,user_password);
    printf("user_name=%s<br>",user_name);
    printf("user_password=%s<br>",user_password);
   
    
    istringstream iss(method_get_data);
    string token;
    printf("------<br>");
    while(getline(iss, token,'&')){
        const char *ptoken = token.c_str();
        if(strstr(ptoken,"user_name")){
            sscanf(ptoken,"user_name=%s",user_name);
        }else if(strstr(ptoken,"user_password")){
            sscanf(ptoken,"user_password=%s",user_password);
        } 
        else if(strstr(ptoken,"submit")){
            sscanf(ptoken,"submit=%s",submit);
        }        
    }
    printf("user_name=%s<br>",user_name);
    printf("user_password=%s<br>",user_password);
    printf("submit=%s<br>",submit);

    printf("------<br>");
    return 0; 
    
} 

测试html页面:

<html>
<head>
	<title>
		hello boa
	</title>
</head>
<body>
	<a href="cgi-bin/main.cgi">main.cgi</a>
	<form method="get" action="cgi-bin/main.cgi">
		用户名:<input type="text" name="user_name">
		<p></p>
		密码:<input type="password" name="user_password">
		<p></p>
		<input type="submit" name="submit" value="submit">
		
		<input type="reset" name="reset" value="reset">
	</form>
</body>	
</html>

二 开始测试

 提交以后获得的值:从结果可知,如果使用sscanf获得的值是有问题的,需要使用istringstream先分隔字符串,然后再判断,得到的值才正确,应该还有更简介的方法吧。

小结

BOA+CGI测试例程.rar_CGI arm_arm cgi_boa_boa cgi_cgi boa
09-21
BOA+CGI arm代码,对初学者很有帮助
简单的cgi程序——获取get、post请求的参数
qq_53633989的博客
10-18 2186
cgi是沟通HTML表单和服务器端程序的接口上面的代码显示了如何获取到客户端发来的get或者post请求的参数
lwip-2.1.3自带的httpd网页服务器使用教程(三)使用CGI获取URL参数(GET类型表单)
ZLK1214的专栏
07-16 3143
当LWIP_HTTPD_FILE_STATE=1时,httpd_cgi_handler函数的原型为void httpd_cgi_handler(struct fs_file *file, const char *uri, int iNumParams, char **pcParam, char **pcValue, void *connection_state),多了一个connection_state参数。新式CGI功能的开启方法是在lwipopts.h中打开LWIP_HTTPD_CGI_SSI选项。
cgi怎么获取页面请求参数(get、post两种请求)
nyist327的专栏
10-13 9394
在开发cgi/fcgi程序时,肯定会遇到读取页面请求参数的问题, 对于get请求来说,直接getenv("QUERY_STRING")就可以拿到,而对于post请求来说,参数是写到标准输入流中的,需要从stdin中读取,或者 cin >> content,
boa cgi 的ajax表单异步提交
01-09
2. ** CGI接口**:CGI允许 boa服务器将用户的表单提交转发到特定的CGI程序,这些程序通常用C或Perl等语言编写,负责处理用户数据并生成动态响应。CGI程序的输出被返回给浏览器,展示给用户。 3. ** cgic库**:在...
Boa服务器下的ajax与cgi通信
11-30
在这个例子中,`get_cgi_data`函数根据HTTP请求的方法(GET或POST)获取并返回数据。GET请求的数据存储在环境变量`QUERY_STRING`中,而POST请求的数据则通过`fread`函数从输入流`fp`中读取。 在嵌入式系统中,可能...
boa数据交互方式学习
05-22
通过上述讨论,我们可以了解到BOA服务器如何利用CGI程序进行数据交互,以及如何处理多种编码,特别是汉字的编码问题。在实际开发中,掌握这些知识点对于构建基于BOAWeb应用至关重要。同时,理解CGI和编码匹配的...
嵌入式web服务器boa_C语言/Python + HTML + javascript + ajax 代码实例例子
03-03
在嵌入式web服务器boa框架的基础上, 使用C语言cgi, 或者Python脚本, 结合HTML + javascript + ajax 的嵌入式web系统的开发实例 html 中使用javascritp + ajax 从C语言生成的cgi文件的get, set 一些值. boa服务器的...
BOA 服务CGI功能最简单测试
houen_study的专栏
09-28 1380
1. 在Ubuntu下Boa测试
CGI参数获取后处理以及根据键获取
NiuAGeNiuC的博客
01-25 1048
#include&lt;iostream&gt; #include &lt;cstring&gt; #include&lt;list&gt; using namespace std; const char *query_string = "para1time=val1&amp;para2=&amp;para3=val3"; string getValueByKey(char *t, ...
Boa web服务器在linux2.6.32下CGI测试
godcyx的专栏
09-08 5080
主机环境:redhat9 交叉编译器:arm-linux-gcc version 4.3.2 平台:s3c2440 (一)           编译boaBoa的官方网站 http://www.boa.org/ 上下载了它的发行版本源码,版本号为0.9
嵌入式web入门:boa服务器移植到简单cgi测试
张亮校的专栏
09-02 1130
移植boa服务器: 1. 从www.boa.org网站下载boa-0.94.13 发布版; 2. # tar -xzvf boa-0.94.13.tar.tar解压到PC linux虚拟机下; 3. 在src目录下执行命令./configure,会产生一个makefile文件; 4. 修改src目录下makefile文件31、32行,将CC = gcc改为CC = arm-linux-gc
Apache下c语言的cgi如何获得Get,Post参数
管子(zero)的杂乱空间
04-18 740
Apache下的c语音的cgi如何获得Get,Post参数 作为实验,自己在ubuntu上搭建apache服务器,提供了网络服务(这一步比较简单,后续补充上来)。遇到的一个问题是,如何获得页面提交的Get或者Post函数。下面会给出具体的源码来实现这一个目的。 先看整体效果图 这样来提交到apache上的test.cgi,应该可以正常显示”hello world” 1....
在c语言写的cgi程序中如何获取URL传递的参数
Primeprime的专栏
08-21 4957
在c语言写的cgi程序中如何获取URL传递的参数 例如在 1.html中通下面的js完成页面调转: window.location.href = "abc.cgi?name1="+name1+"&name2="+name2+"+"&pass1="+pass1+"; 在abc.cgi程序中如何获取页面传递的name1\name2\pass1的值显示在abc.cgi页面 第二种通
cgi脚本提交表单并获取参数
qq_38996170的博客
03-26 1436
1、创建表单 #!/bin/bash echo "content-type:text/html;charset=utf-8" #this is importment echo "" echo "<form action='get.cgi' method='get'>" echo "<p>用户名</p>" echo "<p>&lt...
前端 js 处理一个数组 展示成层级下拉样式
lzfengquan的博客
10-17 335
前端开发中,不管是什么时候都会遇到select 下拉框的使用,一般情况下,数据处理后端都会处理好。前端一般使用相应技术栈所推荐的公共组件就可以了。前端处理的前提是要确定那个是父级元素,那个是子级元素,这样才能更好的处理数据。这个时候前端要写个方法去处理这个数组了。这个数组后端是会给的。
004-按照指定功能模块名称分组
xiaogang1226的博客
10-16 593
需要把一个功能模块的几个功能点放在同一个文档目录下,这几个功能点分布在不同的 Controller。需要把他们单独分组,方便前端对接。在@ApiOperation 里面增加属性 tags 赋值。
argo 使用yml配置编排任务
最新发布
陈锐的技术笔记
10-23 48
前端使用一个可以拖拽的编排工具,每个节点会有镜像和启动命令参数的配置。编写代码把前端接收到的图信息写入到dag-xxx.yml。查看argo可以看到编排的作业。
Boa Web服务器移植教程:Ubuntu 10.10与Arm平台实战
Boa移植手册是一份详细的指南,用于将Web服务器Boa(版本0.94.13)移植到不同平台,包括在x86架构的虚拟机(如基于Ubuntu 10.10的Linux系统)和ARM架构的开发板(如Arm2410)。移植过程分为两个阶段:在虚拟机上的预...
写文章

热门文章

  • 关于windows10休眠文件的开启和关闭 9619
  • ubuntu查看磁盘分区使用情况命令df 7657
  • apt-get update报错解决方法 6854
  • linux通过interfaces配置DHCP和静态IP,配置ubuntu的双网卡 6439
  • 解决win10安装portal v13/v15要求反复重启问题 6162

分类专栏

  • QT 17篇
  • C++ 65篇
  • imx6调试 14篇
  • imx8 18篇
  • glib 16篇
  • 暂未分类 27篇
  • rk3588 3篇
  • docker 2篇
  • EtherNet/IP 3篇
  • BusyBox 1.24.1 6篇
  • petalinux 26篇
  • opencv
  • Thrift 2篇
  • rust 3篇
  • U-Boot 2016.03 18篇
  • CentOS7 2篇
  • verilog 5篇
  • web 15篇
  • 网络 11篇
  • EtherCAT
  • linux内核 88篇
  • linux 应用 119篇
  • ubuntu 41篇
  • linux设备树 3篇

最新评论

  • 生成1bit的bmp图片

    莫照生: 高质量博客,很实用,点赞点赞表情包

  • petalinux驱动实践:起步篇

    努力学习LINUX的嵌入式开发工程师: 哥你真的是我的神

  • vscode在指定的目录中搜索

    tianyazhichiC: 正解,简洁有效

  • ramdisk实践2:ramdisk制作以及解决传参问题的编程详解

    Evan_Arm: 好的,谢谢,我查一下

  • ramdisk实践2:ramdisk制作以及解决传参问题的编程详解

    千册: 看样子是解压失败了,你按照Trying to unpack rootfs image as initramfs,这句提示,沿着这条线走

大家在看

  • Golang | Leetcode Golang题解之第503题下一个更大元素II
  • Java | Leetcode Java题解之第502题IPO 186
  • python的文件操作 265
  • Python | Leetcode Python题解之第503题下一个更大元素II
  • 数据处理和分析之数据聚类:K-means聚类:K-means算法原理与应用 1219

最新文章

  • QT枚举类型转字符串和使用QDebug<<重载输出私有枚举类型
  • 使用QTransform 完成QImage图像的垂直翻转
  • Qt的websocket客户端和服务器测试(非安全版本)
2024
10月 5篇
09月 8篇
08月 4篇
07月 7篇
06月 7篇
05月 1篇
04月 4篇
03月 8篇
01月 5篇
2023年227篇
2022年221篇
2020年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千册

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家黑河卡通玻璃钢雕塑定做新郑玻璃钢景观雕塑制作苏州卡通雕塑玻璃钢玻璃钢卡通雕塑动态河北玻璃钢主题雕塑图片福安小鸟玻璃钢雕塑江苏天筑玻璃钢雕塑临朐寺头玻璃钢雕塑四川特色商场美陈订购铜川卡通玻璃钢雕塑制作重庆玻璃钢雕塑企业玻璃钢史努比雕塑卡通公仔云南人物玻璃钢雕塑定做青浦区镜面玻璃钢雕塑要多少钱商场美陈dp是什么意思玻璃钢民俗雕塑设计费用泉州玻璃钢雕塑模具制作视频商场七周年主题美陈太原步行街玻璃钢雕塑定做价格秋季商场美陈费用玻璃钢牛雕塑厂家报价江苏玻璃钢动物雕塑价格开县玻璃钢园门头雕塑泰安卡通玻璃钢雕塑安装日照玻璃钢雕塑联系方式文山玻璃钢雕塑商家陕西创意玻璃钢雕塑定做价格葡萄玻璃钢雕塑设计厂家忻州玻璃钢雕塑仿木玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化