English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 글은 php에서 parse_str를 사용하여 쿼리 문자열을 변수로 해석하는 방법을 설명합니다. 여러분과 공유하고, 구체적인 내용은 다음과 같습니다:
이를 통해 문자열과 변수 간의 변환을 수행할 수 있습니다./parse_str() 함수는 문자열을 변수로 해석하는 기능을 수행할 수 있습니다. 이는 문자열과 변수 간의 변환 메커니즘을 구현한 것입니다. 클라이언트와 서버 간 데이터 전송 중 데이터는 문자열 형식으로 전송되며, 예를 들어 GET 요청에서 서버 측에서 $_GET//$_POST 등의 전역 변수를 사용하여 문자열과 변수 간의 변환을 수행할 수 있습니다. 예를 들어: https:3codebox.com/?www.w63;index.php'] 방식으로 var1&var2'] 방식으로 var2;var1서버에서는 $_GET['var1'] 방식으로 var1&var2'] 방식으로 var2=1이 부분 문자열을 변수로 변환합니다. parse_str() 함수는 이와 같은 기능을 수행할 수 있습니다. parse_str() 함수를 사용하여 $_SERVER['QUERY_STRING']의 값을 해석하면 문자열과 변수 간의 변환을 직접 수행할 수 있습니다. 예를 들어 $var
。
제1장: 함수 원형
void parse_str ( string str [, array &arr] )
제2장: 버전 호환성 3PHP 4PHP 5
, PHP
1제3장: 함수 기본 사용법 및 예제
<?php 해석된 문자열을 변수에 저장합니다1=jb51&var2해석된 문자열을 변수로 변환합니다 =parse_str");1echo $var2.$var ?>
2;
<?php 해석된 문자열을 변수에 저장합니다1=jb51&var2=parse_str",$array); print_r($array); ?>
출력:
parse_str("var1] => jb51 Array ( [var2] => parse_str )
[var 4설명: PHP에서 변수를 배열에 저장하는 방법은 이렇습니다3 .0.
3해석된 문자열에 공백이 있으면 추가됩니다
<?php parse_str("v ar1=jb51&var 2=parse_str",$array); print_r($array); ?>
출력:
Array ( [v_ar1] => jb51 [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() 호출 중에 요청을 종료하면, 관련 웹서버 프로세스의 나머지 라이프사이클 동안 register_globals 태그가 계속 열려 있습니다.
PHP와 관련된 더 많은 내용에 대해 관심이 있는 독자는 다음 주제를 확인할 수 있습니다: 《PHP 문자열(string) 사용 요약》、《PHP 데이터 구조와 알고리즘 교본》、《PHP 프로그램 설계 알고리즘 요약》、《PHP 정렬 알고리즘 요약》、《PHP 일반적인 순회 알고리즘과 기술 요약》、《PHP 수학 계산 기술 요약》、《PHP 배열(Array) 처리 기술大全》 및 《PHP 일반적인 데이터베이스 처리 기술 요약》
본 글에서 설명한 내용이 PHP 프로그램 설계에 도움이 되길 바랍니다.
공지: 본 내용은 인터넷에서 가져왔으며, 원작자의 소유물입니다. 인터넷 사용자가 자발적으로 기여하고 업로드한 내용으로, 웹사이트는 소유권을 가지지 않으며, 인공적인 편집 처리를 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 문제가 있을 경우 notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com에 이메일을 보내면, #을 @으로 변경하여 신고하시고 관련 증거를 제공하시면, 해당 내용이 확인되면 즉시 해당 내용을 삭제할 것입니다.