Heim  >  Artikel  >  php教程  >  php 中parse_str实现查询字符串解析到变量中

php 中parse_str实现查询字符串解析到变量中

WBOY
WBOYOriginal
2016-05-24 12:59:091324Durchsuche

PHP内置函数研究系列第四期,采用PHP函数parse_str实现查询字符串解析到变量中,主要讨论parse_str()函数的作用和用法.

parse_str()函数可实现把字符串解析到变量中,这意味着实现了字符串与变量之间的一种转换机制,在与客户端数据传递的过程中,数据是通过字符串的形式传递,如GET请求,然后在服务器端通过$_GET/$_POST等全局变量实现字符串与变量的转换,如:http://www.phprm.com/?index.php?var1=1&var2=2,请求后服务端可使用$_GET['var1']的方式获取var1=1&var2=2这一段字符串转换成变量,parse_str()函数可实现用样的功能,使用parse_str()函数解析$_SERVER['QUERY_STRING']的值,就可以直接实现字符串与变量的转换,如$var1.

一,函数原型,代码如下:

void parse_str ( string str [, array &arr] )

二,版本兼容

PHP 3,PHP 4,PHP 5

三,函数基础用法与实例

1,解析字符串为变量,代码如下:

<?php  
	parse_str("var1=liuhui&var2=parse_str");  
	echo $var1.$var2;  
	 

2,解析字符串并将变量存储到数组中,代码如下:

<?php  
	parse_str("var1=liuhui&var2=parse_str",$array);  
	print_r($array);  
	 
	//输出:Array ( [var1] => liuhui [var2] => parse_str ) 

说明:这种将变量存储到数组中在PHP 4.0.3 才增加.

3,解析的字符串有空格,代码如下:

<?php  
	parse_str("v ar1=liuhui&var 2=parse_str",$array);  
	print_r($array);  
	 
	//输出:Array ( [v_ar1] => liuhui [var_2] => parse_str ) 

说明:直接将空格转换为下划线_

四,注意事项

1,如果未设置 array 参数,由该函数设置的变量将覆盖已由同名变量.

2,php.ini 中的 magic_quotes_gpc 设置影响该函数的输出,如果已启用,那么在 parse_str() 解析之前,变量会被 addslashes() 转换.

3,parse_str() 函数在处理参数时存在漏洞,攻击者可以利用这个漏洞启用register_globals,从而进一步利用其他PHP脚本中的漏洞,如果仅以一个参数调用 parse_str()的话,该函数会认为该参数是通过URL传送的请求字符串那样解析所提供的字符串,但外部攻击者可以在调用 parse_str()期间发送很多请求变量来触发memory_limit请求终止,如果在调用parse_str()期间执行了请求关闭的话,则在相 关webserver进程的其余生命周期期间register_globals标签会一直打开.

文章链接:

随便收藏,请保留本文地址!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn