226 votes

Paramètre GET URL en PHP

J'essaie de passer une URL en tant que paramètre url en php mais lorsque j'essaie d'obtenir ce paramètre, je n'obtiens rien.

J'utilise le formulaire url suivant :

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

J'essaie de le faire passer :

$_GET['link'];

Mais rien n'est revenu. Quel est le problème ?

17 votes

Montrez votre code complet

4 votes

Faire var_dump de la $_GET param, il devrait être là

1 votes

Fait $_REQUEST['link'] travail ? Gardez également à l'esprit la clé d'indexation link est sensible à la casse de ce qui est dans l'url.

338voto

Álvaro G. Vicario Points 57607

$_GET n'est pas une fonction ou une construction du langage - c'est juste une variable (un tableau). Essayez :

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

En particulier, c'est un superglobal : une variable intégrée qui est remplie par PHP et qui est disponible dans tous les scopes (vous pouvez l'utiliser à l'intérieur d'une fonction sans l'attribut mondial mot-clé).

Comme la variable peut ne pas exister, vous pouvez (et devez) vous assurer que votre code ne déclenche pas d'avis avec :

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

Alternativement, si vous voulez éviter les vérifications manuelles de l'index et peut-être ajouter d'autres validations, vous pouvez utiliser la fonction filtre extension :

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

Enfin, vous pouvez utiliser la fonction opérateur de coalescence nul (disponible depuis PHP/7.0 ) pour gérer les paramètres manquants :

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

14 votes

Si vous n'avez rien compris, comme moi, vous devez savoir que "lien" est le nom d'une variable dans une adresse URL ! Donc avec $_GET['link'] ; vous devez entrer l'URL comme ceci : localhost/?link=test

0 votes

J'utilise WAMP sur localhost et cette solution ne fonctionne pas. http://localhost/station?type=2 echo $_GET['type']; es null

1 votes

Enfin, j'ai utilisé parse_str(parse_url($actual_link)['query'], $params); . Plus d'informations stackoverflow.com/a/11480852/4458531

30voto

MarcoS Points 1969

Veuillez poster votre code,

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

o

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

faire le travail...

23voto

Utilisez ça :

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

Ou utilisez simplement :

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

21voto

patrick Points 2038

Pour être sûr d'être toujours du bon côté, sans être confronté à toutes sortes d'insertions de codes indésirables, utilisez les FILTRES :

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

Plus de lecture sur php.net fonction filter_input ou consultez le site la description des différents filtres

0 votes

Veuillez noter que ce filtre ne protège pas contre tout type d'attaque. Ce filtre endommagera cependant irrémédiablement vos données. Ne l'utilisez que si vous savez exactement ce que vous faites.

4voto

user235510 Points 1

Je ne recevais rien pour aucun $_GET["..."] (par exemple print_r($_GET) a donné un tableau vide) mais $_SERVER['REQUEST_URI'] a montré des choses qui devraient être là. Finalement, il s'est avéré que je n'arrivais à la page web que parce que mon .htaccess la redirigeait là (mon gestionnaire 404 était le même fichier .php, et j'avais fait une faute de frappe dans le navigateur lors du test).

En changeant simplement le nom, le même code php a fonctionné une fois que la redirection 404 n'a plus fonctionné !

Alors il y a des moyens $_GET peut ne rien renvoyer, même si le code php est correct.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X