Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:url参数_Php_Redirect_Get_String Formatting - Fatal编程技术网

PHP:url参数

PHP:url参数,php,redirect,get,string-formatting,Php,Redirect,Get,String Formatting,我有一个关于在php中格式化URL参数的问题 第1页可以有以下两个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中格式化URL参数的问题

第1页可以有以下两个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

以下表单将提交到添加了参数的同一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>

以下表单将提交到添加了参数的同一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>

首先,使用
isset

如果是,
回显某个链接。如果没有,则回显另一个链接

if( !isset($_GET['bar']) ){
    echo '<a href="?bar=2">link</a>';
}
else{
    echo '<a href="page1.php">link</a>';
}
if(!isset($\u GET['bar'])){
回声';
}
否则{
回声';
}

首先,使用
isset
检查是否设置了某个
$\u GET
参数
如果是,
回显某个链接。如果没有,则回显另一个链接

if( !isset($_GET['bar']) ){
    echo '<a href="?bar=2">link</a>';
}
else{
    echo '<a href="page1.php">link</a>';
}
if(!isset($\u GET['bar'])){
回声';
}
否则{
回声';
}

您可以执行一个简单的get系统,因此您需要检查是否设置了
?foo=1
,如果设置了,您可以回显其内容。如果要显示
bar=2
的内容,请检查其是否已设置并回显其内容。这只是一个简单的方法,还有更多的方法。

您可以执行一个简单的get系统,因此您需要检查是否设置了
?foo=1
,如果设置了,您可以回显其内容。如果要显示
bar=2
的内容,请检查其是否已设置并回显其内容。这只是一个简单的方法,还有更多的方法。

只需使用
$\u服务器['PHP\u SELF']

比如说

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

只需使用
$\u服务器['PHP\u SELF']

比如说

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

我正在使用这些PHP函数来帮助我正确构建URL:

  • parse_str()
  • parse\u url()
  • http\u build\u 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>';

我正在使用这些PHP函数来帮助我正确构建URL:

  • parse_str()
  • parse\u url()
  • http\u build\u 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>';

查看print\r($\u SERVER)的输出;查看print\u r($\服务器)的输出;我原以为这也行,但当您提交表单时,操作中的查询字符串将被删除。@Samuel Ya,这是真的,它将被替换。感谢您指出了这一点。我原以为这也行,但当您提交表单时,操作中的查询字符串将被删除。@Samuel Ya,这是真的,它将被替换。感谢你指出了这一点。