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

取决于当前的网址。我怎么能在php中做到这一点?

谢谢, 维杜

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

你可以做一个简单的获取系统,所以你需要检查是否?foo=1设置了你可以回显它的内容。如果要显示内容以bar=2检查其是否设置并回显其内容。这只是一种简单的方法,但还有更多方法。

于 2012-08-07T14:59:04.673 回答
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

只需您可以使用$_SERVER['PHP_SELF']

例如

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

此处htmlentities()用于避免 PHP_SELF 被利用作为安全预防措施

如果您希望避免隐藏输入字段,您可以附加查询参数,例如action="<?php echo $_SERVER['PHP_SELF']; ?>?foo=1&bar=2"

于 2012-08-07T15:07:35.587 回答