OBTENER el parámetro URL en PHP

190

Estoy tratando de pasar una URL como parámetro de url en php pero cuando trato de obtener este parámetro no obtengo nada

Estoy usando la siguiente forma de URL:

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

Estoy tratando de lograrlo:

$_GET['link'];

Pero nada volvió. ¿Cuál es el problema?

Feras Odeh
fuente
15
Muestra tu código completo
Pekka
3
do var_dumpdel $_GETparam, debería estar allí
Naftali aka Neal
1
hace $_REQUEST['link']el trabajo? También tenga en cuenta que la clave de índice distingue entre linkmayúsculas y minúsculas de lo que hay en la url.
Dutchie432
En realidad no estás tratando de $_GETpublicar algo, ¿verdad?
James
¿Y cuál fue la solución de esto? Tener el mismo problema
Ixx

Respuestas:

283

$_GETno es una función o construcción de lenguaje, es solo una variable (una matriz). Tratar:

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

En particular, es un superglobal : una variable incorporada que está poblada por PHP y está disponible en todos los ámbitos (puede usarla desde dentro de una función sin la palabra clave global ).

Como la variable podría no existir, puede (y debería) asegurarse de que su código no active avisos con:

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

Alternativamente, si desea omitir las comprobaciones de índice manuales y tal vez agregar más validaciones, puede usar la extensión de filtro :

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

Por último, pero no menos importante, puede usar el operador de fusión nula (disponible desde PHP / 7.0 ) para manejar los parámetros que faltan:

echo $_GET['link'] ?? 'Fallback value';
Álvaro González
fuente
14
Si no tiene nada con esto, como yo, de lo que debería saber, ¡ese 'enlace' es un nombre de variable en la dirección URL! Entonces con $ _GET ['link']; debe ingresar una URL como esta: localhost /? link = test
Firzen
Estoy usando WAMP localhosty esta solución no funciona. http://localhost/station?type=2 echo $_GET['type'];esnull
NineCattoRules
Finalmente lo usé parse_str(parse_url($actual_link)['query'], $params);. Más información stackoverflow.com/a/11480852/4458531
NineCattoRules
Usted dice "$ _GET no es una función o construcción de lenguaje, es solo una variable (una matriz)" pero no accedemos a los valores a través del índice, en su lugar, está accediendo a los valores a través de una cadena. ¿Es esto más un diccionario que una matriz?
ScottyBlades
1
@ScottyBlades Estoy hablando en el contexto de las estructuras de datos PHP. En PHP, una matriz es una lista ordenada de combinaciones de clave / valor. Eso difiere de lo que otros lenguajes (por ejemplo, C o JavaScript) llaman "matriz".
Álvaro González
27

Por favor publique su código,

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

o

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

hacer trabajo ...

MarcoS
fuente
18

Utilizar este:

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

O simplemente use:

$parameter = $_GET['link'];
echo $parameter ;
Muhammad Ashikuzzaman
fuente
10

La respuesta aceptada es buena. Pero si tienes un escenario como este:

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

Puede tratar el ancla con nombre como una cadena de consulta como esta:

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

Luego, acceda así:

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

No estaba obteniendo nada para ninguno $_GET["..."](por ejemplo, print_r($_GET)di una matriz vacía) pero $_SERVER['REQUEST_URI']mostraba que las cosas deberían estar allí. Al final resultó que solo estaba llegando a la página web porque mi .htaccess lo estaba redirigiendo allí (mi controlador 404 era el mismo archivo .php, y había cometido un error tipográfico en el navegador durante la prueba).

¡Simplemente cambiar el nombre significaba que el mismo código php funcionó una vez que la redirección 404 no estaba funcionando!

Por lo tanto, hay formas de $_GET no devolver nada a pesar de que el código php puede ser correcto.

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

Matriz ([0] => enlace = www.google.com)

Saurabh Chandra Patel
fuente
0

Quien no recupere nada, creo que solo tiene que incluir el resultado en etiquetas html,

Me gusta esto:

<html>
<head></head>
<body>
<?php
echo $_GET['link'];
?>
<body>
</html>
balazon
fuente
55
No, las etiquetas html no son necesarias. El texto sin formato se representa en todos los navegadores.
MarcoS
-1

Como dijo Alvaro, $ _GET no es una función sino una matriz que contiene los parámetros Para que pueda recuperar un elemento de esa matriz usando

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

OP esperado:

www.google.com
Omer Hijazi
fuente