web-dev-qa-db-fra.com

Paramètre d'URL GET dans PHP

J'essaie de passer une URL en tant que paramètre url en php mais quand j'essaie d'obtenir ce paramètre, je ne reçois rien

J'utilise le formulaire 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?

164
Feras Odeh

$_GET n'est pas une construction de fonction ou de langage, mais simplement une variable (un tableau). Essayer:

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

En particulier, il s'agit d'un superglobal : une variable intégrée qui est renseignée par PHP et est disponible dans toutes les portées (vous pouvez l'utiliser à l'intérieur d'une fonction sans le global mot clé).

Puisque la variable peut ne pas exister, vous pouvez (et devriez) vous assurer que votre code ne déclenche pas de notifications avec:

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

Si vous souhaitez ignorer les vérifications manuelles des index et éventuellement ajouter des validations, vous pouvez utiliser l'extension filter :

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

S'il vous plaît poster votre code,

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

ou

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

faire travailler ...

25
MarcoS

Pour vous assurer que vous êtes toujours du bon côté, sans obtenir toutes sortes d'insertion de code non désirée, utilisez FILTERS:

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

Plus de lecture sur php.net function filter_input , ou consultez la description des différents filtres

16
patrick

Utilisez ceci:

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

Ou simplement utiliser:

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

La réponse acceptée est bonne. Mais si vous avez un scénario comme celui-ci:

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

Vous pouvez traiter l'ancre nommée comme une chaîne de requête comme ceci:

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

Ensuite, accédez-y comme ceci:

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

Je n'obtenais rien pour aucun $_GET["..."] (_ par exemple print_r($_GET) a donné un tableau vide) et pourtant $_SERVER['REQUEST_URI'] a montré que les choses devraient être là. Finalement, il m'est apparu que je n'allais que sur la page Web parce que mon .htaccess le redirigeait (mon gestionnaire 404 était le même fichier .php et j'avais fait une faute de frappe dans le navigateur lors des tests).

Changer simplement le nom signifiait que le même code php fonctionnait une fois que la redirection 404 n'était pas active!

Donc il y a plusieurs façons$_GET ne peut rien renvoyer même si le code php est correct.

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

Tableau ([0] => lien = www.google.com)

2

Celui qui n’obtient rien en retour, je pense qu’il doit simplement inclure le résultat dans des balises html,

Comme ça:

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