HTTP GET参数的获取

2023-10-27

REQUEST_METHOD的值一般包括POSTGET两种

GET参数的获取

GET方法下,CGI程序无法直接从服务器的标准输入中获取数据,因为服务器把从标准输入接收到的数据编码到环境变量QUERY_STRING(PATH_INFO),采用GET方法时,只需把这些数据附加到URL的末尾,如http://192.168.1.211:8080/cgi-bin/222?s=1&b=3&u=0,这时候QUERY_STRING的值为s=1&b=3&u=0

#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>

std::vector<std::string> StringSplit(const std::string &sData,const std::string &sDelim)
{
	std::vector<std::string> vItems;
	vItems.clear();
	std::string::size_type bpos = 0;
	std::string::size_type epos = 0;
	std::string::size_type nlen = sDelim.size();

	while((epos=sData.find(sDelim,epos)) != std::string::npos)
	{
		vItems.push_back(sData.substr(bpos,epos-bpos));
		epos +=nlen;
		bpos = epos;
	}
	vItems.push_back(sData.substr(bpos,sData.size()-bpos));

	return vItems;
}

int get_method()
{
	
	std::cout<<"Content-type:text/html\r\n\r\n";
	std::cout<<"<html>\n";
	
	std::cout<<"<head>\n";
	std::cout<<"<title> Hello World -First CGI Program</title>\n";
	std::cout<<"</head>\n";

	std::cout<<"<body>\n";

	std::cout<<"get parameter:<br/>";

	char *value = getenv("QUERY_STRING");
	if(value != 0)
	{
		std::vector<std::string>paras = StringSplit(std::string(value),std::string("&"));
		std::vector<std::string>::iterator iter = paras.begin();
		for( ;iter != paras.end(); iter++)
		{
			std::vector<std::string>singlepara = StringSplit(*iter,std::string("="));
			std::cout<<singlepara[0]<<" "<<singlepara[1]<<"<br/>";
		}
	}

	std::cout<<"</body>\n";
	std::cout<<"</html>\n";

	return 0;
}

int main()
{
	get_method();
	return 0;
}




g++ -g 2.cpp  -o 222 

root@ubuntu:/share/http/apache2.2.32-install# cp /share/222 cgi-bin/






本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP GET参数的获取 的相关文章

  • 范围for语句

    C 新标准提供的范围for语句 这种语句遍历给定序列中个元素并对序列中每一个值执行某种操作 其语法形式是 for declaration expression statement 其中 expression 部分是一个对象 用于表示一个序列
  • SQL 查询指定行数的数据。

    今天遇到一个关于 查询指定行数的数据 的sql查询语句问题 突然发现以前没怎么接触过 刚才想起来了 赶紧看了下文档 又上网搜了下 有了下面的东西 不知道有没有什么地方不对 oracle 先看一下文档中关于any和all的例子 很不错噢 An
  • HTTP协议头部与Keep-Alive模式详解

    转自 https www byvoid com zhs blog http keep alive header 1 什么是Keep Alive模式 我们知道HTTP协议采用 请求 应答 模式 当使用普通模式 即非KeepAlive模式时 每
  • std::nth_element bug引起的crash问题

    1 源码 auto less compare const MirroringGroup mg1 const MirroringGroup mg2 gt bool return mg1 usage lt mg2 usage std nth e
  • JNA模拟复杂的C类型——Java映射char*、int*、float*、double*

    文章目录 引言 Java Native Type Conversions Java和C基本类型指针对应关系 Pointer的具体用法 引言 最近项目在用Java调用C写的一些三方库 没办法直接调 用Java封装一下C的接口 这就少不了要用到
  • 写时拷贝技术(copy-on-write)

    传统的fork 系统调用直接把所有的资源复制给新创建的进程 这种实现过于简单并且效率低下 因为它拷贝的数据也许并不共享 更糟的情况是 如果新进程打算立即执行一个新的映像 那么所有的拷贝都将前功尽弃 Linux的fork 使用写时拷贝 cop
  • typedef struct 用法详解

    typedef为C语言的关键字 作用是为一种数据类型定义一个新名字 当typedef与结构结合使用时 会有一些比较复杂的情况 而且在C语言和C 里面有略有差别 本文将详细讲解typedef struct的用法 第一篇 typedef str
  • 无法打开源文件<sys/time.h>,但是用time.h编译就会出错,缺少gettimeofday()

    因为sys time h是uinx系统下的库文件 而现在使用的平台是在windows 由于未指明程序运行的系统 导致找不到对应的头文件 需要重新实现gettimeofday 函数 define WIN32 include
  • 经典面试题之new和malloc的区别

    new和malloc的区别是C C 一道经典的面试题 我也遇到过几次 回答的都不是很好 今天特意整理了一下 0 属性 new delete是C 关键字 需要编译器支持 malloc free是库函数 需要头文件支持 1 参数 使用new操作
  • GDAL多光谱与全色图像融合简单使用

    目录 简述 C 代码 效果对比 GDAL融合效果和原始多光谱波段对比 GDAL融合效果和原始全色波段对比 ARCGIS融合效果与原始全色和多光谱对比 GDAL融合效果与ArcGIS融合效果对比 简述 最近在GDAL的代码中看见了gdalpa
  • BP学习算法-构建三层神经网络

    引 人工神经网络 Artificial Neural Networks 简写为ANNs 也简称为神经网络 NNs 或称作连接模型 Connection Model 是一种模仿动物神经网络行为特征 进行分布式并行信息处理的算法数学模型 这种网
  • vector,list,deque区别

    http blog csdn net renkaihao article details 6803866 vector和built in数组类似 它拥有一段连续的内存空间 并且起始地址不变 因此它能非常好的支持随即存取 即 操作符 但由于它
  • mongos、nanomsg、zeroMQ简述和go-mongos使用实例

    mongos nanomsg zeroMQ简述和go mongos使用实例 文章目录 mongos nanomsg zeroMQ简述和go mongos使用实例 1 mongos nanomsg简述 2 zeroMQ nanomsg和可扩展
  • Public Private Protect Inheritance and access specifiers

    In the previous lessons on inheritance we ve been making all of our data members public in order to simplify the example
  • stat 函数解析

    stat 函数的简单使用 stat 函数是用来获取文件的各种属性的一个linux下的常用API函数 函数原型为int stat const char path struct stat buf stat定义如下 struct stat dev
  • 【C++】运算符重载

    加号运算符重载 include
  • Java反序列化漏洞-CC1利用链分析

    文章目录 一 前置知识 1 反射 2 Commons Collections是什么 3 环境准备 二 分析利用链 1 Transform
  • C 语言运算符详解

    C 语言中的运算符 运算符用于对变量和值进行操作 在下面的示例中 我们使用 运算符将两个值相加 int myNum 100 50 虽然 运算符通常用于将两个值相加 就像上面的示例一样 它还可以用于将变量和值相加 或者将变量和另一个变量相加
  • 在 Solaris 上,使用 gcc 编译的库与使用 cc 生成的库的使用方式是否相同?

    我目前正在尝试编译 libxml2在 Solaris 上 当我运行源代码提供的 configure 脚本时 会自动使用 gcc 和 g 编译器 但是 我想使用 cc 和 CC 编译器 所以我跑 configure CC cc CXX CC
  • Woocommerce:添加第二个电子邮件地址不起作用,除非收件人是管理员

    我尝试了多种方法来向 Woocommerce 电子邮件添加其他收件人 但它似乎仅适用于主要收件人是管理员的测试订单 这些是我尝试过的片段 如果订单的客户是管理员 则电子邮件将发送到这两个地址 如果订单包含客户电子邮件地址 则仅发送至该电子邮

随机推荐

  • openssl常用参数

    文章目录 前言 对称加密 标准语法 常用选项 应用示例 单向加密 标准语法 常用选项 应用示例 参考文档 前言 OpenSSL 是一个开源项目 可以实现 秘钥证书管理 对称加密和非对称加密 其主要由一下三个组件组成 openssl 多用途的
  • Synchronized与锁升级

    目录 1 先从阿里及其他大厂面试题说起 2 路线总纲 3 Synchronized的性能变化 4 Synchronized锁种类及升级步骤 4 1多线程访问情况 3种 4 2升级流程 4 3无锁 4 4偏向锁 4 5轻量级锁 4 6重量级锁
  • 【经典】springboot 配置文件统一管理

    背景 为实现快速搭建和开发 项目以Springboot框架搭建 springboot搭建的项目可以将项目直接打成jar包并运行 无需自己安装配置Tomcat或者其他服务器 是一种方便快捷的部署方式 假设项目以最常规的方式打包成一个整体的ja
  • Onvif协议学习:7、鉴权认证

    Onvif协议学习 7 鉴权认证 文章目录 Onvif协议学习 7 鉴权认证 1 前言 2 ONVIF哪些接口需要认证 3 如何认证 4 安装OpenSSL 5 实现认证 6 特别注意 原文链接 https blog csdn net be
  • QT学习(十九)——用QFile读写文件

    写文件 两种方法 1 第一种使用QString获取编辑区的内容之后直接用toUtf8 转化为QByteArray 2 第二种使用QString获取编辑区的内容之后先转化成std string 再转换成char 不过最后的文件类型都是UTF
  • Zookeeper(一)简介说明

    1 1 什么是Zookeeper Zookeeper是一个高效的分布式协调服务 它暴露了一些公用服务 比如命名 配置管理 同步控制 群组服务等 我们可以使用ZK来实现比如达成共识 集群管理 leader选举等 Zookeeper是一个高可用
  • 编写高质量代码:改善Java程序的151个建议(第9章:多线程和并发___建议125~131)

    建议125 优先选择线程池 建议126 适时选择不同的线程池来实现 建议127 lock与synchronized是不一样的 建议128 预防线程死锁 建议129 适当设置阻塞队列的长度 建议130 使用CountDownLatch协调子线
  • Spring Cloud Alibaba核心组件概述

    目录 概览 Nacos 注册中心 配置中心 Sentinel 限流 熔断降级 控制台 动态规则扩展 Seata AT模式 TCC模式 Saga模式 XA模式 Spring Cloud Gateway 关键特性 核心概念 负载均衡 概览 Sp
  • fetch整个仓库 github_为开源项目做贡献的10个步骤,GitHub贡献的简短指南

    在本文中 我将给出10个简单的步骤 以确保GitHub的贡献快速而干净 贡献的生命周期 步骤 1 fork主仓库 fork主仓库会在你的帐户中创建一个副本 你可以进行更改并将任何代码推送到此fork 而不必担心会弄乱原始代码库 单击页面顶部
  • java中tip是什么意思_tip是什么意思

    tip指的是小费或者是尖端 指点的意思 tip美音可以是 t p 英音是 t p 第三人称单数可以写为tips 复数可以直接写为tips 现在分词是tipping 过去式是tipped 列句 每次给爸妈买些东西 总是能赚到小费 Every
  • IBM --AIX 常用命令

    创建组 mkgroup id 101 info 创建用户 mkuser pgrp staff home home campaign shell usr bin ksh groups staff campaign 解压 unzip campa
  • AcWing 425. 明明的随机数

    题目 明明想在学校中请一些同学一起做一项问卷调查 为了实验的客观性 他先用计算机生成了N个1到1000之间的随机整数 对于其中重复的数字 只保留一个 把其余相同的数去掉 不同的数对应着不同的学生的学号 然后再把这些数从小到大排序 按照排好的
  • golang学习demo4-goroutine并行测试

    知识点 go语言的routine的使用 通道chan的使用 想测试一下go的routine 就写了个求大量素数的程序 分别开1 99个协程进行求解 对比结果 首先是没有开协程的 下面是开了少数几个协程的程序 可以看到在 cnt 5 的时候速
  • Pytorch GPU版本简明下载安装教程

    1 根据自己的显卡型号下载显卡驱动并安装 这一步会更新你的显卡驱动 也可忽略第1步 如果第2步出现问题 返回执行第1步 点击这里下载英伟达显卡驱动 2 安装完成后 win cmd打开命令行 输入nvidia smi 查看GPU信息 右上角C
  • elementUIel-input和el-select宽度不一样

    在vue项目中 使用了element组件的 el input 和 el select组件 设置了相同的宽度 但是宽度显示不一样 给el select添加style width 100 就可以解决 没加样式之前的效果 添加样式 没加样式之后的
  • 机器学习入门教学——决策树

    1 简介 决策树算法是一种归纳分类算法 它通过对训练集的学习 挖掘出有用的规则 用于对新数据进行预测 决策树算法属于监督学习方法 决策树归纳的基本算法是贪心算法 自顶向下来构建决策树 贪心算法 在每一步选择中都采取在当前状态下最好 优的选择
  • 52类110个主流Java组件和框架

    以下排序是按照从技术组件到开发框架到代码工具 也有一些实在不好分类的 就放到最后了 WEB 容器 Tomcat https tomcat apache org Jetty https www jetty com JBoss https ww
  • JAVA命令行编译运行程序

    JAVA源程序名扩展名必须是 java 并且主文件名必须是 1 如有public类必须写public类的名 2 如没有public类则主文件名任意 编译源程序 javac d 目录名 源文件 以上命令中 d 目录名代表将编译产生的二进制码文
  • 用计算机对视频进行剪裁和编辑,Win10系统剪裁视频功能怎么用?windows10剪裁视频功能使用方法介绍...

    最近 有不少Win10正式版用户向小编咨询新系统上是否有好的视频剪切软件 答案是肯定的 我们只要利用Win10系统中的 照片 就可以快速实现剪裁视频操作 接下来 小编就向大家介绍windows10系统剪裁视频功能的使用方法 具体方法如下 1
  • HTTP GET参数的获取

    REQUEST METHOD的值一般包括POST和GET两种 GET参数的获取 在GET方法下 CGI程序无法直接从服务器的标准输入中获取数据 因为服务器把从标准输入接收到的数据编码到环境变量QUERY STRING 或PATH INFO