php抓取网页内容(几种PHP传值的方法学习笔记(组图)PHP朋友少走弯路)
优采云 发布时间: 2022-03-07 23:23php抓取网页内容(几种PHP传值的方法学习笔记(组图)PHP朋友少走弯路)
网上很多朋友都遇到过PHP传值的问题。大部分是因为阅读了旧版的 PHP 教程却使用了新版的 PHP 造成的。在这里,小编边学习边记录,整理了几个PHP中传值的方法作为学习笔记,希望PHP新手朋友少走弯路。
1、PHP4后获取传递值的方法
一般来说,POST、GET、COOKIE是常用的页面传值方式,下面我主要介绍这几种。 PHP4 之后,使用 $_POST 和 $_GET 等数组来获取网页值。在 PHP3.0 及以下版本中,使用了 $HTTP_POST_VARS 和 $HTTP_GET_VARS 等数组。具体代码如下
回显 $_POST[\'dopost\']; ?>
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_");
回声 $p_dopost;
HTML部分参考方法一,获取的值为dopost输入框变量。
5、使用提取功能
PHP extract() 函数将变量从数组导入到当前符号表中。对于数组中的每个元素,键名用于变量名,键值用于变量值。第二个参数类型用于指定当变量已经存在且数组中存在同名元素时,extract()函数如何处理此类冲突。
语法:extract(array,extract_rules,prefix)
使用方法:
如果(!empty($_POST)) 提取($_POST);
回声 $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!\'); } } 函数 _RunMagicQuotes(&$svar) { if(!get_magic_quotes_gpc()) { if( is_array($ svar) ) { foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v ); } 其他 { $svar = addlashes($svar); } } 返回 $svar; } foreach( Array(\'_GET\',\'_POST\',\'_COOKIE\') as $_request) { foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($ _v); }
把上面的代码放到一个公共的php页面中,然后你只需要在获取网页的时候使用就可以传值了。