Как сделать, чтобы переменная со значением появилась один раз в URL php - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть код, который работает, и он добавляет переменную и значение к текущему URL. то, что я сделал, чтобы получить текущий URL, используя

PHP

function c_url() {
   $cUrl = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
   $vUrl = str_replace("&", "&", $cUrl);

   return $vUrl;
}

И затем, когда я нажимаю ссылку html, она добавляет переменную со значением на URL

HTML LINKS

<a href="<?php echo c_url(); ?>&brand=hello">Brand</a><br>
<a href="<?php echo c_url(); ?>&color=red">Color</a><br>
<a href="<?php echo c_url(); ?>&size=M">Size</a><br>
<a href="<?php echo c_url(); ?>&price=12000">price</a>

Проблема в том, что когда я нажимаю кнопку несколько раз, она просто повторяет одну и ту же переменную и значение на URL, пока он не будет заполнен этим. Поэтому я хочу, чтобы, когда я щелкаю ссылку, и в URL появляется значение, я не хочу, чтобы оно появлялось снова, когда я щелкаю по той же ссылке, но я все же хочу, чтобы другие ссылки нажимались при щелчке по нему один раз.

Есть ли способ сделать это?

1 Ответ

2 голосов
/ 24 апреля 2020

Вам необходимо удалить значения из строки запроса, которые вы не хотите дублировать. Вы можете сделать это, передав имя этого параметра в вашу функцию и удалив его из суперглобального $_GET, а затем построив новую строку.

function c_url($key) {
    unset($_GET[$key]);
    $queryString = http_build_query($_GET);

    return $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?'.$queryString;
}

// Pass "b" to the function to remove it from the echo'd URL
echo c_url('b') . '&b=5';

Вывод:

http://http://www.example.com/test.php?a=1&c=3&b=5

Демо

$_GET = [
    'a' => 1,
    'b' => 2,
    'c' => 3,
];

$_SERVER = [
    'HTTP_HOST' => 'http://www.example.com',
    'SCRIPT_NAME' => '/test.php',
];

function c_url($key) {
    unset($_GET[$key]);
    $queryString = http_build_query($_GET);

    return $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?'.$queryString;
}

echo c_url('b') . '&b=5';

Живой пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...