Получить параметр URL в PHP - PullRequest
162 голосов
/ 04 мая 2011

Я пытаюсь передать URL как параметр url в php, но когда я пытаюсь получить этот параметр, я ничего не получаю

Я использую следующую форму URL:

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

Я пытаюсь пройти через:

$_GET['link'];

Но ничего не вернулось. В чем проблема?

Ответы [ 8 ]

235 голосов
/ 04 мая 2011

$_GET не является функцией или языковой конструкцией - это просто переменная (массив).Попробуйте:

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

В частности, это superglobal : встроенная переменная, которая заполняется PHP и доступна во всех областях (вы можете использовать ее внутри функции без global ключевое слово).

Поскольку переменная может не существовать, вы можете (и должны) убедиться, что ваш код не вызывает уведомления с помощью:

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

В качестве альтернативы, есливы хотите пропустить проверки индекса вручную и, возможно, добавить дополнительные проверки, вы можете использовать расширение filter :

<?php
echo filter_input(INPUT_GET, 'link', FILTER_SANITIZE_URL);
25 голосов
/ 04 мая 2011

Пожалуйста, оставьте свой код,

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

или

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

do работа ...

16 голосов
/ 31 октября 2013

Чтобы быть уверенным, что вы всегда в безопасности, без всякой вставки нежелательного кода, используйте ФИЛЬТРЫ:

echo filter_input(INPUT_GET,"link",FILTER_SANITIZE_STRING);

Подробнее о php.net функция filter_input или проверить описание различных фильтров

13 голосов
/ 20 мая 2014

Используйте это:

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

Или просто используйте:

$parameter = $_GET['link'];
echo $parameter ;
7 голосов
/ 05 октября 2015

Принятый ответ - это хорошо.Но если у вас есть такой сценарий:

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'];
2 голосов
/ 12 января 2015
     $Query_String  = explode("&", explode("?", $_SERVER['REQUEST_URI'])[1] );
    var_dump($Query_String)

Массив ([0] => ссылка = www.google.com)

2 голосов
/ 09 мая 2014

Я ничего не получал ни за какие $_GET["..."] (например, print_r($_GET) дал пустой массив), но $_SERVER['REQUEST_URI'] показал, что вещи должны быть там. В конце концов оказалось, что я только зашел на веб-страницу, потому что мой .htaccess перенаправлял ее туда (мой обработчик 404 был тем же файлом .php, и я сделал опечатку в браузере при тестировании).

Простое изменение имени означало, что тот же php-код сработал, как только не началось перенаправление 404!

Так что есть способы $_GET, которые ничего не могут вернуть, даже если код php может быть правильным.

0 голосов
/ 02 августа 2013

Кто бы ничего не получил обратно, я думаю, что он просто должен заключить результат в HTML-теги,

Как это:

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