GET URL-parameter in PHP

Ik probeer een URL als url-parameter in php door te geven, maar als ik deze parameter probeer te krijgen, krijg ik niets

Ik gebruik het volgende url-formulier:

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

Ik probeer er doorheen te komen:

$_GET['link'];

Maar er kwam niets terug. Wat is het probleem?


Antwoord 1, autoriteit 100%

$_GETis geen functie of taalconstructie, het is gewoon een variabele (een array). Probeer:

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

Het is met name een superglobaal: een ingebouwde in variabele die wordt ingevuld door PHP en beschikbaar is in alle scopes (u kunt deze gebruiken vanuit een functie zonder de algemeenzoekwoord).

Aangezien de variabele mogelijk niet bestaat, kunt (en moet) u ervoor zorgen dat uw code geen meldingen activeert met:

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

Als je handmatige indexcontroles wilt overslaan en misschien meer validaties wilt toevoegen, kun je ook de filter-extensie gebruiken:

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

Last but not least kunt u de nul-coalescentie-operator(beschikbaar sinds PHP/7.0) om ontbrekende parameters af te handelen:

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

Antwoord 2, autoriteit 9%

Plaats je code,

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

of

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

doenwerken…


Antwoord 3, autoriteit 6%

Gebruik dit:

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

Of gebruik gewoon:

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

Antwoord 4, autoriteit 6%

Om er zeker van te zijn dat u altijd aan de veilige kant zit, zonder allerlei ongewenste code-invoeging, gebruikt u FILTERS:

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

Meer informatie over php.net functie filter_input, of bekijk de beschrijving van de verschillende filters


Antwoord 5, autoriteit 3%

Het geaccepteerde antwoord is goed. Maar als je een scenario als dit hebt:

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

U kunt het genoemde anker als volgt behandelen als een queryreeks:

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

Ga er dan als volgt naar toe:

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

Antwoord 6

Ik kreeg niets voor $_GET["..."](bijv. print_r($_GET)gaf een lege array) en toch $_SERVER['REQUEST_URI']liet zien dat er dingen zouden moeten zijn. Uiteindelijk bleek dat ik alleen op de webpagina kwam omdat mijn .htaccess het daarheen leidde (mijn 404-handler was hetzelfde .php-bestand en ik had een typfout gemaakt in de browser tijdens het testen).

Het simpelweg veranderen van de naam betekende dat dezelfde php-code werkte toen de 404-omleiding niet in werking trad!

Dus er zijn manieren$_GETkan niets teruggeven, ook al is de php-code mogelijk correct.


Antwoord 7

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

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


Antwoord 8

Zoals Alvaro zei, $_GET is geen functie maar een array die de parameters bevat
U kunt dus één element uit die array ophalen met

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

Verwachte OP:

www.google.com

Antwoord 9

Wie niets terugkrijgt, ik denk dat hij het resultaat gewoon tussen html-tags moet insluiten,

Zoals dit:

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

Other episodes