PHP에서 GET URL 매개 변수


190

PHP에서 URL 매개 변수로 URL을 전달하려고 하는데이 매개 변수를 얻으려고하면 아무것도 얻지 못합니다.

다음 URL 양식을 사용하고 있습니다.

http://localhost/dispatch.php?link=www.google.com

나는 그것을 통해 얻으려고 노력하고있다 :

$_GET['link'];

그러나 아무것도 반환되지 않았습니다. 무엇이 문제입니까?


15
전체 코드 표시
Pekka

3
수행 var_dump$_GETPARAM, 그것은이 있어야한다
Naftali 닐 일명

1
않는 $_REQUEST['link']일을? 또한 색인 키 link는 URL의 내용에 대소 문자를 구분합니다.
Dutchie432

당신은 실제로 노력하고 $_GET있지 않지만 게시되고 있습니까?
James

그리고 이것의 해결책은 무엇입니까? 같은 문제가 발생
Ixx

답변:


283

$_GET함수 나 언어 구조가 아니라 변수 (배열) 일뿐입니다. 시험:

<?php
echo $_GET['link'];

특히, 그것은 superglobal : PHP에 의해 채워지고 모든 범위에서 사용 가능한 내장 변수입니다 ( global 키워드 없이 함수 내에서 사용할 수 있습니다 ).

변수가 존재하지 않을 수 있으므로 다음과 같이 코드가 알림을 트리거하지 않도록 할 수 있습니다.

<?php
if (isset($_GET['link'])) {
    echo $_GET['link'];
} else {
    // Fallback behaviour goes here
}

또는 수동 색인 확인을 건너 뛰고 추가 유효성 검사를 추가하려는 경우 필터 확장을 사용할 수 있습니다 .

<?php
echo filter_input(INPUT_GET, 'link', FILTER_SANITIZE_URL);

마지막으로 null 병합 연산자 ( PHP / 7.0 부터 사용 가능 )를 사용하여 누락 된 매개 변수를 처리 할 수 ​​있습니다.

echo $_GET['link'] ?? 'Fallback value';

14
나와 같이 아무것도 모르는 경우 'link'는 URL 주소의 변수 이름입니다! 따라서 $ _GET [ 'link']; 다음과 같은 URL을 입력해야합니다 : localhost /? link = test
Firzen

WAMP를 사용하고 있는데이 localhost솔루션이 작동하지 않습니다. http://localhost/station?type=2 echo $_GET['type'];null
NineCattoRules

마지막으로 사용했습니다 parse_str(parse_url($actual_link)['query'], $params);. 더 많은 정보 stackoverflow.com/a/11480852/4458531
NineCattoRules

"$ _GET은 함수 나 언어 구조가 아니라 변수 (배열) 일뿐"이지만 인덱스를 통해 값에 액세스하지 않고 문자열을 통해 값에 액세스합니다. 이것이 배열보다 더 많은 사전입니까?
ScottyBlades 19 :

1
@ScottyBlades PHP 데이터 구조의 맥락에서 말하고 있습니다. PHP에서 배열 은 정렬 된 키 / 값 조합 목록입니다. 이는 다른 언어 (예 : C 또는 JavaScript)가 "배열"이라고 부르는 것과 다릅니다.
Álvaro González

27

코드를 게시하십시오

<?php
    echo $_GET['link'];
?>

또는

<?php
    echo $_REQUEST['link'];
?>

일을 ...



18

이것을 사용하십시오 :

$parameter = $_SERVER['QUERY_STRING'];
echo $parameter;

또는 그냥 사용하십시오 :

$parameter = $_GET['link'];
echo $parameter ;

10

허용 된 답변이 좋습니다. 그러나 다음과 같은 시나리오가 있다면 :

http://www.mydomain.me/index.php?state=California.php#Berkeley

명명 된 앵커를 다음과 같은 쿼리 문자열로 취급 할 수 있습니다.

http://www.mydomain.me/index.php?state=California.php&city=Berkeley

그런 다음 다음과 같이 액세스하십시오.

$Url = $_GET['state']."#".$_GET['city'];

3

나는 아무것도 얻지 못했습니다 $_GET["..."](예 : print_r($_GET)빈 배열을 $_SERVER['REQUEST_URI']주 었지만) 물건이 있어야한다는 것을 보여주었습니다. 결국 내 .htaccess가 그것을 리디렉션하기 때문에 웹 페이지에만 도착하는 것으로 나타났습니다 (404 처리기는 동일한 .php 파일이며 테스트 할 때 브라우저에서 오타가 발생했습니다).

404 리디렉션이 시작되지 않으면 이름을 변경하는 것만으로도 동일한 PHP 코드가 작동했습니다!

그래서 방법이있다 $_GET PHP 코드가 정확하더라도 아무것도 돌려주지 수는.


3
$Query_String  = explode("&", explode("?", $_SERVER['REQUEST_URI'])[1] );
var_dump($Query_String)

배열 ([0] => link = www.google.com)


0

아무 것도 돌려받지 못하는 사람은 결과를 html 태그로 묶어야한다고 생각합니다.

이처럼 :

<html>
<head></head>
<body>
<?php
echo $_GET['link'];
?>
<body>
</html>

5
아니요, html 태그는 필요하지 않습니다. 일반 텍스트는 모든 브라우저에서 렌더링됩니다 .
MarcoS

-1

Alvaro가 말했듯이 $ _GET은 함수가 아니라 매개 변수를 포함하는 배열이므로 다음을 사용하여 해당 배열에서 하나의 요소를 검색 할 수 있습니다

<?php
$link = $_GET['link'];
echo $link;
?>

예상 OP :

www.google.com
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.