如何重定向而不复制相同的url查询


Php How do you redirect without copying the same url query

我正在验证页面上的表单,我需要在重定向时重定向到具有相同url查询和在查询末尾附加&valid=false的同一页面。

如何做到这一点,使url在重定向时不重复:

http://test.com/index.php?a=1&b=2&valid=false&a=1&b=2&valid=false

我使用$_SERVER['REQUEST_URI']

有很多方法可以做到这一点,这里有一个简单的方法:

$url = $_SERVER['REQUEST_URI'];
if (!isset($_GET['valid'])) {
    $url.='&valid=false';    //assuming there are always additional parameters, otherwise you must check whether to use '?' or '&' 
}

但是你也可以使用parse_url(), strpos(),正则表达式等

您可以在修改参数后使用http_build_query():

<?php
    $_GET['a'] = 1;
    $_GET['b'] = 2;
    $_GET['valid'] = 'true';
    $url = $_SERVER['SCRIPT_NAME'].'?'.http_build_query($_GET);
?>

就像这样,如果$_GET['valid']没有定义,那么它将被创建,否则它将被修改