PHP -- 页面传值的6种获取方法
1、PHP4以后获取传值的方法
一般在页面中传值常见的是POST、GET和COOKIE几种,所以下面我也主要介绍这几种。PHP4以后都采用的是$_POST、$_GET等数组来获取网页传值。在PHP3.0及Z以下版本都是用的是$HTTP_POST_VARS、$HTTP_GET_VARS等数组,具体代码如下
<?php
echo $_POST['dopost'];
?> < form action="weste_net.php" method="post" name='form1' id="form1">
< input type="text" name="dopost" value="hello weste.net!" />
< input type="submit" name="weste" value="提交" />
< /form>
2、旧版本PHP3以前的获取传值方法
上面说过了,可以使用$HTTP_POST_VARS、$HTTP_GET_VARS、$HTTP_COOKIE_VARS这些数组读取。在旧版本的PHP中,还可以使用如$dopost的方法直接获取传值,这种方法比较简洁,在后面的几种获取网页传值的方法中,其实icech都是围绕着如何能使用$dopost来获取网页传值的。
3、修改PHP.ini文件的配置
还有一个问题是为什么PHP3和PHP4及其以后会不兼容呢?其实有一个很重要的原因是,在PHP4以后,PHP.ini文件中的register_globals被默认设置为Off了。所以造成以前使用$dopost这种方法直接获取网页传值不能使用了。
简单的方法来查看一下register_globals的值
<?php
echo 'register_globals = ' . ini_get('register_globals');
?>
如果register_globals=Off,显示register_globals = 或者 register_globals = 0
如果register_globals=On,显示register_globals = 1
手动修改register_globals为On,提交的表单中如果包含一个名为“dopost”的变量,那么在PHP中就可以使用$dopost来获取该变量。但是如果使用的是虚拟主机,想要修改php.ini文件还是比较困难的。这里只是提供一个方法。
4、使用import_request_variables函数
import_request_variables函数的作用就是将GET、POST、Cookie变量导入到全局作用域中,如果你禁止了register_globals,但又想用到一些全局变量,则此函数很有用。
语法:bool import_request_variables(string $types[, string $prefix])
第一个参数可以为g、p或者c,就是GET、POST、COOKIE变量的头一个字母,意思也很明确;
第二个参数是导入后的变量前缀,可以随意写;
简单的例子:
import_request_variables("p","p_");
echo $p_dopost;
HTML部分参照方法1的,获取的是值为dopost输入框变量。
5、使用extract函数
PHP extract() 函数从数组中把变量导入到当前的符号表中。对于数组中的每个元素,键名用于变量名,键值用于变量值。第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。
语法:extract(array,extract_rules,prefix)
使用方法:
if(!empty($_POST)) extract($_POST);
echo $dopost;
这种方法很简单吧?也很实用。
6、dedecms里面使用的方法
在dede中,事先判断了register_globals的值,如果是Off就调用下面的程序,如果是On,那么就可以直接用了。具体的代码如下,放在了common.inc.php文件中
//检查和注册外部提交的变量
foreach($_REQUEST as $_k=>$_v)
{
if( strlen($_k)>0 && eregi('^(cfg_|GLOBALS)',$_k) && !isset($_COOKIE[$_k]) )
{
exit('Request var not allow!');
}
} function _RunMagicQuotes(&$svar)
{
if(!get_magic_quotes_gpc())
{
if(is_array($svar))
{
foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);
}
else
{
$svar = addslashes($svar);
}
}
return $svar;
} foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);
}
把以上代码放到一个公用的php页面中,后面获取网页传值的时候只需要使用就可以了。
FROM:http://www.weste.net/2009/3-9/15141465162.html
PHP -- 页面传值的6种获取方法的更多相关文章
- uni-app开发经验分享一: 多页面传值的三种解决方法
开发了一年的uni-app,在这里总结一些uni-app开发中的问题,提供几个解决方法,分享给大家: 问题描述:一个主页面,需要联通一到两个子页面,子页面传值到主页面,主页面更新 问题难点: 首先我们 ...
- React Router v4 页面传值的三种方法
传值方法 1.props.params 使用React router定义路由时,我们可以给指定一个path,然后指定通配符可以携带参数到指定的path: <Route path='/user/: ...
- 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】
阅读目录 1. URL 链接后追加参数 2. Form 3. 设置 Cookie 4. 设置 Session JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧. 试着将各种方式总 ...
- layui 父页面获取弹窗传递的值 和 父页面传值给子弹窗的方法
1.父页面获取子页面(弹窗)的值: 现在父页面页面加载方法中定义方法,专门用来获取从子页面的值 $(document).ready(function() { //拿到子窗口中传回的数据 functio ...
- ASP.NET页面传值的几种方式
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值. 存储对象传值.ajax.类.model.表单等!下面欧柏泰克和大家一起来看看asp.net页面传值方式一般有哪些?常用的较简单 ...
- ASP.Net中页面传值的几种方式
开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...
- ios页面传值的几种方法
1.属性2.方法3.代理方法4.SharedApplication5.NSUserdefault6.通过一个单例的class来传递 属性这种方法传值挺方便的,只需要拿到它的指针,如果重新声明一个指针, ...
- javascript静态页面传值的三种方法分享
一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 复制代码 代码如下: <input type="text" ...
- javascript HTML静态页面传值的四种方法
一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 代码如下: <input type="text" name= ...
随机推荐
- python-num18 - django进阶一
一.深入django的路由系统 下面为django的请求生命周期 下面来看下整个生命周期中的路由系统: 在Django的urls中我们可以根据一个URL对应一个函数名来定义路由规则如下: " ...
- CentOS 6.6下目录结构及其主要作用
今天我们总结一下CentOS 6.6的linux的目录结构,一个系统的目录众多,这里我们主要认识一下,根目录下的主要目录,首先我们可以通过tree命令查看一次根目录下一层目录都有什么目录, 补充:不能 ...
- 一款线程安全、基本功能齐全的STL
MiniSTL 目前正在完成一个STL,主要想通过该项目锻炼C++编程.模板编程.熟悉STL.锻炼数据结构和算法能力. 项目的目标是实现STL的几大构件+线程安全.项目过程中主要参考SGI STL源码 ...
- ubuntu sougou输入法
1, 打开搜狗输入法Linux版的官网http://pinyin.sogou.com/linux/?r=pinyin,并下载你需要的版本,这里选择64位版. 2,在Ubuntu14.01下可以直接点击 ...
- 用PHP去实现数据库查询结果缓存
有些时候我们希望减少对数据库的查询来提高程序的性能,因为这些数据不是经常变更的,而是会在很长一段时间内都不会变化,因此,我们每连接一次数据库,都会把相应的结果用文件的形式保存起来.比如对于一个商城来说 ...
- POJ 3169 Layout (spfa+差分约束)
题目链接:http://poj.org/problem?id=3169 题目大意:n头牛,按编号1~n从左往右排列,可以多头牛站在同一个点,给出ml行条件,每行三个数a b c表示dis[b]-dis ...
- 使用Nginx代理Django
一.准备环境 检查python版本以及pip版本 [root@linux-node01 src]# python --version Python 2.7.5 [root@linux-node01 s ...
- JAVA(一)变量
public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(" ...
- Python 一些 实用的包(持续更新)
line_profiler:(代码性能分析) 使用方法:链接 codecs:(Python内置的编码库) 数据分析与挖掘领域: 引自博客:这里 因为他有很多这个领域相关的库可以用,而且很好用, ...
- Pytest UI自动化测试实战实例
前言 明天就放假了,4天小长假,是不是很开心!也许很多人要回老家帮家里种地,干农活.其实能陪陪家里人,帮忙干点农活还是挺开心的,希望大家有个愉快的假期!废话不多说哈,今天再来说说pytest吧,经过几 ...