程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 中parse_str實現查詢字符串解析到變量中

php 中parse_str實現查詢字符串解析到變量中

編輯:關於PHP編程

PHP內置函數研究系列第四期,采用PHP函數parse_str實現查詢字符串解析到變量中,主要討論parse_str()函數的作用和用法。  

parse_str()函數可實現把字符串解析到變量中,這意味著實現了字符串與變量之間的一種轉換機制,在與客戶端數據傳遞的過程中,數據是通過字符串的形式傳遞,如GET請求,然後在服務器端通過$_GET/$_POST等全局變量實現字符串與變量的轉換,如:http://www.liuhui.info/?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,解析字符串為變量

 代碼如下 復制代碼

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


2,解析字符串並將變量存儲到數組中

 代碼如下 復制代碼

parse_str("var1=liuhui&var2=parse_str",$array);
print_r($array);
?>


輸出:Array ( [var1] => liuhui [var2] => parse_str )

說明:這種將變量存儲到數組中在PHP 4.0.3 才增加

3,解析的字符串有空格

 代碼如下 復制代碼

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標簽會一直打開。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved