[php] URL 쿼리 문자열 매개 변수 가져 오기

다음과 같은 형식의 URL 쿼리 문자열에서 매개 변수를 가져 오는 “필요한 코드가 적은”방법은 무엇입니까?

www.mysite.com/category/subcategory?myqueryhash

출력은 다음과 같아야합니다. myqueryhash

이 접근법을 알고 있습니다.

www.mysite.com/category/subcategory?q=myquery

<?php
   echo $_GET['q'];  //Output: myquery
?>



답변

$_SERVER['QUERY_STRING'] 찾고있는 데이터를 포함합니다.


선적 서류 비치


답변

PHP를 사용하는 방법 은 URL을 구문 분석하고 해당 구성 요소를 반환하는 parse_url 함수를 사용하는 것입니다 . 쿼리 문자열을 포함합니다.

예:

$url = 'www.mysite.com/category/subcategory?myqueryhash';
echo parse_url($url, PHP_URL_QUERY); # output "myqueryhash"

여기에 전체 문서


답변

이 함수는 parse_str()모든 쿼리 매개 변수를 배열로 자동 읽습니다.

예를 들어 URL이 http://www.example.com/page.php?x=100&y=200인 경우 코드

$queries = array();
parse_str($_SERVER['QUERY_STRING'], $queries);

매개 변수를 $queries배열에 저장합니다 ( $queries['x']=100, $queries['y']=200).

parse_str의 문서를 보십시오


편집하다

PHP 문서에 따르면 parse_str(), 두 번째 매개 변수 만 사용해야합니다. 사용하여 parse_str($_SERVER['QUERY_STRING'])변수를 생성합니다이 URL에서 $x$y같은 공격에 취약 코드를 만드는, http://www.example.com/page.php?authenticated=1.


답변

전체 쿼리 문자열을 원하는 경우 :

$_SERVER["QUERY_STRING"]


답변

나는 최고의 답변을 추천합니다

<?php
echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!';
?>

사용자가 http://example.com/?name=Hannes를 입력했다고 가정

위의 예는 다음과 같이 출력됩니다.

하네스 안녕하세요!


답변

또한 쿼리 문자열과 함께 현재 파일 이름을 찾고 있다면 다음과 같이하면됩니다.

basename($_SERVER['REQUEST_URI'])

다음 예제와 같은 정보를 제공합니다.

file.php? arg1 = val & arg2 = val

그리고 루트에서 시작하여 파일의 전체 경로를 원할 경우 (예 : /folder/folder2/file.php?arg1=val&arg2=val) basename () 함수를 제거하고 채우기를 사용하십시오.

$_SERVER['REQUEST_URI']


답변

다음은 REFERRER 쿼리 문자열 일부를 다시 작성하는 함수 입니다.

호출 페이지에 이미 자체 URL 에 쿼리 문자열이 있고 해당 페이지로 돌아가서 해당 $_GETvars 의 일부 (예 : 페이지 번호)를 다시 보내려고 하는 경우

예 : 리퍼러의 쿼리 문자열이 returns 를 ?foo=1&bar=2&baz=3호출했습니다 .refererQueryString( 'foo' , 'baz' )foo=1&baz=3"

function refererQueryString(/* var args */) {

    //Return empty string if no referer or no $_GET vars in referer available:
    if (!isset($_SERVER['HTTP_REFERER']) ||
        empty( $_SERVER['HTTP_REFERER']) ||
        empty(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY ))) {

        return '';
    }

    //Get URL query of referer (something like "threadID=7&page=8")
    $refererQueryString = parse_url(urldecode($_SERVER['HTTP_REFERER']), PHP_URL_QUERY);

    //Which values do you want to extract? (You passed their names as variables.)
    $args = func_get_args();

    //Get '[key=name]' strings out of referer's URL:
    $pairs = explode('&',$refererQueryString);

    //String you will return later:
    $return = '';

    //Analyze retrieved strings and look for the ones of interest:
    foreach ($pairs as $pair) {
        $keyVal = explode('=',$pair);
        $key = &$keyVal[0];
        $val = urlencode($keyVal[1]);
        //If you passed the name as arg, attach current pair to return string:
        if(in_array($key,$args)) {
            $return .= '&'. $key . '=' .$val;
        }
    }

    //Here are your returned 'key=value' pairs glued together with "&":
    return ltrim($return,'&');
}

//If your referer was 'page.php?foo=1&bar=2&baz=3'
//and you want to header() back to 'page.php?foo=1&baz=3'
//(no 'bar', only foo and baz), then apply:

header('Location: page.php?'.refererQueryString('foo','baz'));