wake-up-neo.com

GET URL-Parameter in PHP

Ich versuche, eine URL als URL-Parameter in PHP zu übergeben, aber wenn ich versuche, diesen Parameter abzurufen, erhalte ich nichts

Ich benutze das folgende URL-Formular:

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

Ich versuche es durchzubringen:

$_GET['link'];

Aber nichts kehrte zurück. Worin besteht das Problem?

164
Feras Odeh

$_GET ist keine Funktion oder Sprachkonstruktion - es ist nur eine Variable (ein Array). Versuchen:

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

Insbesondere ist es eine superglobale : eine eingebaute Variable, die mit PHP gefüllt ist und in allen Bereichen verfügbar ist (Sie können sie aus einer Funktion ohne global Schlüsselwort).

Da die Variable möglicherweise nicht vorhanden ist, können (und sollten) Sie sicherstellen, dass Ihr Code keine Benachrichtigungen auslöst mit:

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

Alternativ können Sie die Erweiterung Filter verwenden, wenn Sie manuelle Indexprüfungen überspringen und möglicherweise weitere Überprüfungen hinzufügen möchten:

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

Bitte posten Sie Ihren Code,

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

oder

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

do arbeiten ...

25
MarcoS

Um sicherzugehen, dass Sie immer auf der sicheren Seite sind, ohne unerwünschte Code-Einfügungen zu erhalten, verwenden Sie FILTERS:

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

Weitere Informationen finden Sie unter php.net function filter_input oder unter Beschreibung der verschiedenen Filter

16
patrick

Benutze das:

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

Oder benutzen Sie einfach:

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

Die akzeptierte Antwort ist gut. Aber wenn Sie ein Szenario wie dieses haben:

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

Sie können den benannten Anker wie folgt als Abfragezeichenfolge behandeln:

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

Greifen Sie dann folgendermaßen darauf zu:

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

Ich habe für keinen $_GET["..."] etwas bekommen (z. B. gab print_r($_GET) ein leeres Array), aber $_SERVER['REQUEST_URI'] hat gezeigt, dass etwas da sein sollte. Am Ende stellte sich heraus, dass ich nur auf die Webseite kam, weil mein .htaccess sie dort umleitete (mein 404-Handler war dieselbe .php-Datei, und ich hatte beim Testen einen Tippfehler im Browser gemacht).

Das einfache Ändern des Namens bedeutete, dass derselbe PHP-Code funktionierte, als die 404-Umleitung nicht aktiv wurde!

Also es gibt Möglichkeiten$_GET kann nichts zurückgeben, obwohl der PHP-Code möglicherweise korrekt ist.

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

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

Wer nichts zurückbekommt, muss das Ergebnis wohl nur in HTML-Tags einschließen.

So was:

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