关于PHP动态的接收传递的GET,POST和COOKIE变量
0x01
- 我们知道 PHP 接收的变量最常用的是 GET,POST,COOKIE 这三个变量。GET变量是附在 url 后传输的,而 POST 变量是放在 http 包中传输的,COOKIE 则是浏览器中储存的,变量最常用的接收变量的方法比如 get 方式是通过 $_GET[],中括号中是变量名,但是是在变量名知道的情况下并且一次只能接收一个变量值,那么怎么在不知道变量名的情况下去动态的接收变量名和变量名对应的值呢,可以通过结合 PHP 中的可变变量和 foreach 遍历的方法来实现这个方法(这个方法是我在看米拓 cms 源码的时候偶然发现的,这里研究了一下,顺便和大家分享一下)。首先大家看一下什么是PHP 中的可变变量
0x02
- PHP 变量的定义方式,比如说我要定义一个变量名为 var 的值为 test,那么可以这样办:
$var="test",定义完之后这个变量名就不可以改变了,如果要修改这个变量名的话,就需要用到 PHP中的可变变量:$$var,以下是可变变量的利用方法,利用可变变量来查询 _COOKIE。 - 首先呢查看一下网页的 COOKIE

- 之后用可变变量的方式来查询这个 COOKIE,并且把他打印出来

为了帮助大家更好的理解这个可变变量,这里贴出了 PHP 官网的一个例子
<?php
//You can even add more Dollar Signs
$Bar = "a";
$Foo = "Bar";
$World = "Foo";
$Hello = "World";
$a = "Hello";
// PS:$$var 和 ${$var}的效果是一样的
$a; //Returns Hello
$$a; //Returns World
$$$a; //Returns Foo
$$$$a; //Returns Bar
$$$$$a; //Returns a
$$$$$$a; //Returns Hello
$$$$$$$a; //Returns World
//... and so on ...//
?>
0x03
- 动态的查询COOKIE变量

0x04
- 动态的接收GET传递过来的变量

0x05
- 动态的接收POST传递过来的变量


0x06
- 还有一种方法就是 GET,POST 和 COOKIE 三个参数都接收(米拓 cms 就是这样的)

总结
利用 PHP 可变变量来接收传递过来的变量名和变量值确实很方便,但可变变量的利用方式还有很多,有兴趣可以去官网看一看。还有一个就是安全方面的问题,以这种方式接收传递的变量必须进行严格过滤
下面是源码方便粘贴
部分接收的 (异曲同工,所以只贴了一个)
<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
<meta charset="utf-8">
</head>
<body>
<?php
$test = "_GET";
foreach (${$test} as $key => $value) {
# code...
echo '$key的值是:'."$key"."<br>";
echo '$value的值是:'."$value"."<br>";
}
?>
</body>
</html>
全都接收的
<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
<meta charset="utf-8">
</head>
<body>
<?php
$var_all = array("_GET", "_POST", "_COOKIE");
foreach ($var_all as $key) {
# code...
foreach ($$key as $_key => $value) {
# code...
echo '$_key的值是:'."$_key"."<br>";
echo '$value的值是:'."$value"."<br>";
}
}
?>
</body>
</html>
PS:如果认为我这个博客有什么问题或者有修改意见的,请一定要告诉我,非常感谢(我的邮箱2412875746@qq.com)
关于PHP动态的接收传递的GET,POST和COOKIE变量的更多相关文章
- 前端传递给后端且通过cookie方式,尽量传递id
前端传递给后端且通过cookie方式,尽量传递id
- Android 静态广播和动态广播接收顺序
Android广播有两个很重要的要素: 1 广播 - 用于发送广播 有序广播 - 被广播接收器接收后,可被终止,无法往下继续传达. 典型代表:短信广播 普通广播 - 发送至每一 ...
- DATAX动态参数数据传递
实例:ORACLE到ORACLE的数据传递 编写job.xml文件,添加变量参数 执行datax.py文件时记得带参数 格式:./datax.py –p"-Ddbname=*** -Di ...
- vue 动态组件,传递参数
<template> <div class="top"> <div class='nav'> <ul class='navHader'&g ...
- jsonp跨域实现单点登录,跨域传递用户信息以及保存cookie注意事项
网站A:代码:网站a的login.html页面刷新,使用jsonp方式将信息传递给b.com的login.php中去,只需要在b.com中设置一下跨域以及接收参数,然后存到cookei即可, 注意:网 ...
- go语言练习:幂、函授接收和返回参数、转义字符、变量和常量
1.实现a^b次方 package main func main() { r2 := power1(2,4) println(r2) } func power1(a uint64, b uint64) ...
- 动态执行SQL语句,接收返回值
一.exec和sp_executesql介绍 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句.比如,一个比较通用的分页存储过程,可能需要传入表名,字段,过滤条件, ...
- EasyUI Tree 动态传递参数
1.问题背景 一般出现在加载的时候,传递参数给后台,进行数据筛选,然后在加载tree渲染数据.所谓动态参数,可以是你的上一级节点node,或者是根节点node. 2.涉及方法 onBeforeLoad ...
- JavaScript—之对象参数的引用传递
变量 1.JavaScript hoisting >>请看例子,我们拿Chrome的console作为JS的运行环境. 上面直接执行console.log(a), 不带一点悬念地抛出了no ...
随机推荐
- docker 部署mysql服务之后,执行sql脚本
1,先将.sql文件copy到docker容器里 docker ps //找到容器的短ID或者指定的name. docker inspect -f '{{.Id}}' id or name 得到指定 ...
- MyBatis架构分析
我们都知道Mybatis是一个非常小巧灵活的ORM框架,深受国内广大开发者的喜爱,我们知道它的出现某种程度是为了消除所有的JDBC代码和参数的手工设置以及结果集的封装问题:基于这个一点,我们就可以 ...
- python基础(9)增强型赋值与使用普通赋值的区别
前言 增强型赋值语句是经常被使用到的,因为从各种学习渠道中,我们能够得知i += 1的效率往往要比 i = i + 1 更高一些(这里以 += 为例,实际上增强型赋值语句不仅限于此).所以我们会乐此不 ...
- git配置,以及简单的命令
在 window 平台需要安装对应的客户端 git 配置全局用户名git config --global user.name "xxx"配置全局邮箱git config --glo ...
- Less常用变量与方法记录
需求:仅记录Lsee常用变量与方法定义,便于使用.-- @color: #000; @title-color: #000; @bg-color: #fff; @small-font: 12px; @l ...
- unittest系列(一)unittest简介和示例
unittest - 单元测试框架 单元测试框架是受到 JUnit 的启发,与其他语言中的主流单元测试框架有着相似的风格.其支持测试自动化,配置共享和关机代码测试.支持将测试样例聚合到测试集中,并将测 ...
- 事件 on
$(选择器).on(事件名称,事件的处理函数) 事件名称:js事件去掉on的部分,例如js中onclick,这里就是click 例如:<input type="button" ...
- 一文彻底搞懂JS前端5大模块化规范及其区别
码文不易,转载请带上本文链接,感谢~ https://www.cnblogs.com/echoyya/p/14577243.html 目录 码文不易,转载请带上本文链接,感谢~ https://www ...
- 源码级深挖AQS队列同步器
我们知道,在java中提供了两类锁的实现,一种是在jvm层级上实现的synchrinized隐式锁,另一类是jdk在代码层级实现的,juc包下的Lock显示锁,而提到Lock就不得不提一下它的核心队列 ...
- Leedcode算法专题训练(哈希表)
Java 中的 HashSet 用于存储一个集合,可以查找元素是否在集合中.如果元素有穷,并且范围不大,那么可以用一个布尔数组来存储一个元素是否存在.例如对于只有小写字符的元素,就可以用一个长度为 2 ...