×
新网 > 虚机资讯 > 正文

PHP页面传值的6种获取方法

  • 作者:未知
  • 来源:
  • 2018-03-05 01:18:48

在网上有不少朋友遇到过PHP传值的问题,大都是因为看了老PHP版本的教程但用着新版本的PHP引起的,这里icech边学边记录,整理了几种PHP传值的方法,就作为学习笔记了,也希望新学PHP的朋友少走弯路。 1、PHP4以后获取传值的方法 一般在页面中传值常见的是POST、GET和COOKIE几种,所以下面我也主要介绍这几种。PHP4以后都采用的是$_POST、$_GET等数组来获取网页传值

在网上有不少朋友遇到过PHP传值的问题,大都是因为看了老PHP版本的教程但用着新版本的PHP引起的,这里小编边学边记录,整理了几种PHP传值的方法,就作为学习笔记了,也希望新学PHP的朋友少走弯路。

 

timg (2).jpg

1、PHP4以后获取传值的方法

一般在页面中传值常见的是POST、GET和COOKIE几种,所以下面我也主要介绍这几种。PHP4以后都采用的是$_POST、$_GET等数组来获取网页传值。在PHP3.0及以下版本都是用的是$HTTP_POST_VARS、$HTTP_GET_VARS等数组,具体代码如下

 

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的值
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页面中,后面获取网页传值的时候只需要使用就可以了。

 

 

  • 相关专题

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

免费咨询获取折扣

Loading