1、php4以后获取传值的方法
一般在页面中传值常见的是post、get和cookie几种。
php4以后都采用的是$_post、$_get等数组来获取网页传值。
在php3.0及以下版本都是用的是$http_post_vars、$http_get_vars等数组。
代码:
2、旧版本php3以前的获取传值方法
上面说过了,可以使用$http_post_vars、$http_get_vars、$http_cookie_vars这些数组读取。(php实例 www.jb200.com)在旧版本的php中,还可以使用如$dopost的方法直接获取传值,这种方法比较简洁,在后面的几种获取网页传值的方法中,其实icech都是围绕着如何能使用$dopost来获取网页传值的。
3、修改php.ini文件的配置
为什么php3和php4及其以后会不兼容呢?
在php4以后,php.ini文件中的register_globals被默认设置为off了。
所以造成以前使用$dopost这种方法直接获取网页传值不能使用了。
来查看一下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变量的头一个字母,意思也很明确;
第二个参数是导入后的变量前缀,可以随意写;
例子:
html部分参照方法1的,获取的是值为dopost输入框变量。
5、使用extract函数
php extract() 函数从数组中把变量导入到当前的符号表中。
对于数组中的每个元素,键名用于变量名,键值用于变量值。
第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。
语法:extract(array,extract_rules,prefix)
使用方法:
在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);
}