1

PHPでのURLパラメータのフォーマットについて質問があります

ページ1はこれらの2つのURLを持つことができます

http://somewhere.com/page1.php?foo=1
and
http://somewhere.com/page1.php

今ページ1で、ボタンをクリックすると、それ自体にリダイレクトしたいのですが、URLにそのような追加のパラメーターがあります

http://somewhere.com/page1.php?foo=1&bar=2
or
http://somewhere.com/page1.php?bar=2

現在のURLによって異なります。PHPでこれを行うにはどうすればよいですか?

ありがとう、Vidhu

4

5 に答える 5

1

まず、を使用して、特定の$_GETパラメータが設定されているかどうかを確認しissetます。
もしそうならecho、特定のリンク。そうでない場合は、echo別のリンク。

if( !isset($_GET['bar']) ){
    echo '<a href="?bar=2">link</a>';
}
else{
    echo '<a href="page1.php">link</a>';
}
于 2012-08-07T14:55:07.047 に答える
0

私はこれらのPHP関数を使用して、URLを正しく作成できるようにしています。

  • parse_str()
  • parse_url()
  • http_build_query()
  • http-build-url()

例:

<?php

function add_parameters($parameters) {
    parse_str($_SERVER['QUERY_STRING'], $old_parameters_as_array);
    return $_SERVER['PHP_SELF'].'?'.http_build_query(array_merge($old_parameters_as_array, $parameters));
}

echo '<a href="'.add_parameters(array('bar' => 2)).'">Link</a>';
于 2012-09-13T08:55:49.483 に答える
0

次のフォームは、パラメータが追加された同じURLに送信されます。

<form action="<?php echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>" method="get">
    <?php
        // Iterate through our query string and add each key value pair as a hidden input
        foreach ($_GET as $key => $value)
        {
            ?>
                <input type="hidden" name="<?php echo $key; ?>" value="<?php echo $value; ?>"/>
            <?php
        }
    ?>

    <!-- new parameter to add -->
    <input type="hidden" name="foo" value="1"/>
    <input type="submit"/>
</form>
于 2012-08-07T14:55:03.323 に答える
0

簡単なgetシステムを?foo=1実行できるので、コンテンツをエコーできるかどうかが設定されているかどうかを確認する必要があります。コンテンツを表示してbar=2、そのセットが設定されているかどうかを確認し、そのコンテンツをエコーする場合。ただし、これは他の方法がある単純な方法です。

于 2012-08-07T14:59:04.673 に答える
0

単にあなたはで行うことができます$_SERVER['PHP_SELF']

例えば

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="get">
    <input type="hidden" name="foo" value="1"/>
    <input type="submit"/>
</form>

ここでは、セキュリティ対策としてphp_SELFの悪用を回避するためにhtmlentities()が使用されています

非表示の入力フィールドを避けたい場合は、次のようなクエリパラメータを追加できます。action="<?php echo $_SERVER['PHP_SELF']; ?>?foo=1&bar=2"

于 2012-08-07T15:07:35.587 に答える