web-dev-qa-db-ja.com

PHPのGET URLパラメータ

私はphpのURLパラメータとしてURLを渡そうとしていますが、このパラメータを取得しようとしても何も表示されません。

次のURLフォームを使用しています。

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

私はそれを通り抜けようとしています:

$_GET['link'];

しかし、何も戻ってこなかった。何が問題ですか?

159
Feras Odeh

$_GETは関数や言語の構成要素ではありません - それはただの変数(配列)です。試してください:

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

特に、それは スーパーグローバル :PHPによって設定され、すべてのスコープで利用可能な組み込み変数です(あなたが使うことができます) 大域的 キーワードなしで関数の中から)。

変数が存在しない可能性があるので、あなたのコードが次のような通知を引き起こさないようにすることができます(そしてそうすべきです)。

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

手動インデックスチェックをスキップしてさらに検証を追加したい場合は、 フィルタ 拡張子を使用することもできます。

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

あなたのコードを投稿してください。

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

または

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

do動作します...

25
MarcoS

あらゆる種類の不要なコードの挿入を行わずに、常に安全な側にいることを確認するには、FILTERSを使用します。

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

php.net関数filter_input をもっと読むか、あるいは異なるフィルターの説明をチェックアウト する

16
patrick

これを使って:

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

または単に使用:

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

受け入れられた答えは良いです。しかし、あなたがこのようなシナリオがあるならば:

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

このように、名前付きアンカーをクエリ文字列として扱うことができます。

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

次に、このようにアクセスします。

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

私はどの$_GET["..."]でも何も得られませんでした(例えばprint_r($_GET)は空の配列を与えました)が、$_SERVER['REQUEST_URI']は何かがそこにあるべきであることを示しました。結局、私の.htaccessがそこにリダイレクトしていたので、私はWebページにたどり着いているだけでした(私の404ハンドラは同じ.phpファイルで、テスト時にブラウザでタイプミスをしました)。

単純に名前を変更するということは、404リダイレクトが起動しなくなった後も同じPHPコードが機能することを意味します。

だからphpコードが正しいとしても$_GETは何も返さない方法があります。

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

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

何も戻ってこない人は誰でも、結果をhtmlタグで囲まなければならないと思います、

このような:

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