在使用PHP开发Web应用时,最常见的需求就是使用一个表单(Form)收集用户提交的数据。在PHP中,通过Form表单获取用户提交的数据非常的容易,但是在细节上也存在细微的差别,这一点依赖于你使用的PHP的版本和在php.ini中一些配置。

在PHP脚本中,你可以使用跟表单字段同名的变量来访问每一个表单字段的值,依据你PHP的版本和配置,有三种访问的方式。

假设表单中有一输入框,命名为tireqty,那么对应于这三种方式如下:

短样式变量

$tireqth // short style

这种方式使用很方便,直接使用跟表单字段同名的变量访问数据,但是需要在php.ini中启用register_globals配置,出于安全的原因,这个配置默认是关闭的。启用该选项,会带了很大的安全漏洞,可以直接通过Web页面提交特殊数据来控制服务端PHP脚本的执行流程,所以这种方式是不推荐使用的,这也是该选项之所以默认关闭的原因。

我使用的PHP版本是5.5.36,我看了一下我的php.ini文件,发现没有该配置选项,所以我就Bing了一下,发现了如下信息:

** register_globals **

Whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables.

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

原来官方在5.4版本中就已经移除了该选项,怪不得我寻她不见呢,看来这种方式虽然很诱人但成昨日黄花了。

中样式变量

$_POST['tireqty'] // medium style

这种方式说长不长、说短不短,符合中庸之道也,而且在安全上也相对有保障,所以是推荐使用的一种方式。在使用上有个下技巧,就是人为的变换成短样式变量,这样方便在脚本中使用,如下:

$tireqty = $_POST['tireqty']

长样式变量

$HTTP_POST_VARS['tireqty'] // long style

这种方式最为繁琐,但也最为通用——也就是说对老版本的PHP服务器兼容性最好,所以如果你的PHP程序要考虑兼容老版本服务器,可以使用这种方式。但是因为性能的原因,官方已经在新版本的PHP中准备废弃和移除该特性。

该特性通过register_long_arrays配置项来控制关闭,默认是开启的。

但我查看了一下我的php.ini配置文件,没有找到该选项。然后我又轻轻的Bing了一下,在PHP的官方文档发现如下信息:

register_long_arrays

Tells PHP whether or not to register the deprecated long $HTTP_*_VARS type predefined variables. When On (default), long predefined PHP variables like $HTTP_GET_VARS will be defined. If you're not using them, it's recommended to turn them off, for performance reasons. Instead, use the superglobal arrays, like $_GET. This directive became available in PHP 5.0.0.

Warning: 本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

看来又不用纠结这个选项了,已经被官方给干掉了。三种方式被废掉了两个,瞬间感觉世界又美好了起来——选择太多也是一种烦恼啊。

php 表单变量,PHP学习笔记——访问表单变量相关推荐

  1. oracle查询时定义临时的变量,oracle学习笔记之临时变量的使用

    在oracle中临时变量可以用&|&&   name 的格式代表临时变量使用& 和使用&& 是有区别的 以下是一个不使用临时变量的查询语句: SQL&g ...

  2. 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码

    吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...

  3. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

  4. MySQL8单表记录多少_mysql学习笔记之8(单表数据记录查询)_mysql

    mysql学习笔记之八(单表数据记录查询) 查询数据记录,就是指从数据库对象中获取所要求的数据记录.mysql中提供了各种不同方式的数据查询方法. 一.简单数据记录查询 select field1,f ...

  5. TypeScript学习笔记1:变量赋值及书写方式

    TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 变量赋值 ...

  6. ES6学习笔记03:变量的解构赋值

    ES6学习笔记03:变量的解构赋值 如果想从复杂数据结构(数组.对象)中获取某一个数据,可能需要大量的遍历操作才能完成.通过解构赋值,这一过程可以得到简化. 1.字符串的解构赋值 其实,Python也 ...

  7. Kaldi单音素GMM学习笔记

    建议在csdn资源页中免费下载该学习笔记的PDF版进行阅读:)点击进入下载页面 Kaldi单音素GMM学习笔记 目录 Kaldi单音素GMM学习笔记 原理 脚本 程序 gmm-init-mono co ...

  8. oracle update单引号,Oracle学习笔记:update的字段中包括单引号

    平时update的时候直接更改字段内的值,例如: update table_temp set name = 'Hider' where id = 100; 但更新后的值中包括单引号,则不能按以上方式进 ...

  9. Python3 基础学习笔记 C01【变量和简单数据类型】

    CSDN 课程推荐:<8小时Python零基础轻松入门>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门& ...

最新文章

  1. Linux安装Nodejs
  2. linux curl https报错: curl: (35) SSL connect error
  3. 网站推广——对于网站推广公司来说应如何帮助企业实现网站优化?
  4. 分享网页加载速度优化的一些技巧?
  5. Android char数据类型乱码��解决方法
  6. Ubuntu中Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend)问题的解决
  7. Javascript:关闭当前界面
  8. JMeter压力测试工具
  9. 光棍节程序员闯关秀 小游戏
  10. 关于印发国家测绘地理信息局2013年立法工作计划的通知
  11. PS一键磨皮美白扩展插件Delicious Retouch 5.0 汉化集合版 Win/Mac
  12. 【论文笔记】Imagenet-trained cnns are Biased towards Texture; Increasing Shape Bias Improves accuracy
  13. ubuntu加了张固态_将ubuntu系统迁移到ssd固态
  14. 玩转华为ENSP模拟器系列 | 配置IS-IS负载分担示例
  15. LeetCode 371. 两整数之和(异或操作) / 639. 解码方法 II(动态规划)/ 437. 路径总和 III
  16. 堆内存(heap)和栈内存(stack)区别
  17. 虚拟化技术 - 概览 [一]
  18. 《 FreeSWITCH权威指南》——1.2 电话实现技术
  19. R语言 trim=0.1 tirm=0.2 什么意思呢?
  20. STM32串口IDLE中断

热门文章

  1. 图解深度强化学习(简单的)
  2. 基于Swoole和Redis实现的并发队列处理系统
  3. 【总结整理】数据可视化
  4. React数据获取为什么一定要在componentDidMount里面调用?
  5. 0417 jsBom操作+Dom再次整理
  6. 《Learning Scrapy》(中文版)第11章 Scrapyd分布式抓取和实时分析
  7. Zabbix邮件报警设置方法
  8. #51CTO学院四周年# 成长路上的我和你
  9. Silverlight调用本机exe程序
  10. Scapy脚本执行出现警告WARNING解决办法