Как сохранить get параметр при переходе на другую страницу?
Здравствуйте.
Как например при переходе с
https://domen.ru/test/?сity=mos
на
https://domen.ru/test_2/,
https://domen.ru/test_3/,
https://domen.ru/test_2/test_3/
и т.п., сохранить ?сity=mos , чтобы получилось:
https://domen.ru/test_2/?сity=mos,
https://domen.ru/test_3/?сity=mos,
https://domen.ru/test_2/test_3/?сity=mos
и т.п.
Реально ли через php дописать get параметр в адресной строке при переходе на любую внутреннюю ссылку?
Дополнительно:
А чего не реального?
https://qna.habr.com/q/1314864?a=test
$url = 'test.ru'; $get = $_GET['city']; echo $url . '?city=' . $get; echo $_SERVER['QUERY_STRING']; |
$url = 'test.ru'; $get = $_GET['city']; echo $url . '?city=' . $get; echo $_SERVER['QUERY_STRING'];
Ответы:
Если вы хотите сохранить выбранный населенный пункт в вашем разрабатываемом сайте (интернет магазине), то вам не нужно тянуть этот параметр при каждой ссылке. Вам нужно при выборе города от пользователя получить этот параметр один раз и сохранить его либо в куках $_COOKIE, либо в сессионной переменной в $_SESSION, либо в базе данных в профиле пользователя.
Далее, при любом обращении к любой странице вашего сайта доставать этот параметр из описанных выше источников и использовать как некую переменную контекста для выбора и формирования контента страницы.
- Я в первую очередь об этом подумал, но нужно чтобы в адресной строке отображалась ссылка с сохраненным get параметром. Чтобы не авторизованный пользователь смог вернуться по это же ссылке, также это нужно для seo.
Решил вопрос таким способом:
$dom = new DOMDocument; @$dom->loadHTML($output); if(isset($_GET["сity"])){ foreach($dom->getElementsByTagName('a') as $link){ $href = $link->getAttribute('href'); $parts = parse_url($href); parse_str($parts['query'], $query); if(!isset($query['сity']) && preg_match('/^(?!(?:javascript|data|chrome|mailto|tel|sms|callto|mms|skype):).+$/', $href)){ if ($parts['path'] == null) $href .= '/'; $href .= (($parsedUrl['query'] == NULL)?'?':'&').'сity='.$_GET["сity"]; $link->setAttribute('href', $href); } } } echo $dom->saveHTML(); |
$dom = new DOMDocument; @$dom->loadHTML($output); if(isset($_GET["сity"])){ foreach($dom->getElementsByTagName('a') as $link){ $href = $link->getAttribute('href'); $parts = parse_url($href); parse_str($parts['query'], $query); if(!isset($query['сity']) && preg_match('/^(?!(?:javascript|data|chrome|mailto|tel|sms|callto|mms|skype):).+$/', $href)){ if ($parts['path'] == null) $href .= '/'; $href .= (($parsedUrl['query'] == NULL)?'?':'&').'сity='.$_GET["сity"]; $link->setAttribute('href', $href); } } } echo $dom->saveHTML();
через php дописать get параметр в адресной строке
это невозможно - php не управляет браузером напрямую.
---
Можно сделать редирект, но думаю для seo это тоже не хорошо.
//псевдо if REFERRER has ?сity=mos return redirect REQUEST?сity=mos |
//псевдо if REFERRER has ?сity=mos return redirect REQUEST?сity=mos
---
В php генерите страницы добавляя в ссылки нужные параметры
т.е. на странице https://domen.ru/test/?сity=mos ссылка должна быть сразу https://domen.ru/test_2/?сity=mos |
т.е. на странице https://domen.ru/test/?сity=mos ссылка должна быть сразу https://domen.ru/test_2/?сity=mos
---
Как вариант - через добавить ?сity=mos к нужным ссылкам на странице.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы сохранить GET параметр при переходе на другую страницу, можно воспользоваться двумя основными методами: использование сессий или передача параметра через URL.
1. Использование сессий:
Для этого необходимо сохранить GET параметр в сессии перед переходом на другую страницу. Например, если у вас есть GET параметр 'id', то вы можете сохранить его в сессии следующим образом:
session_start(); $_SESSION['id'] = $_GET['id'];
После этого при переходе на другую страницу вы можете получить значение 'id' из сессии:
session_start(); $id = $_SESSION['id'];
2. Передача параметра через URL:
Если вы хотите передать GET параметр через URL, то в ссылке на другую страницу просто добавьте его в параметры. Например, если у вас есть GET параметр 'id', то ссылка на другую страницу будет выглядеть так:
<a href="another_page.php?id=">Перейти на другую страницу</a>
На другой странице вы сможете получить значение 'id' из GET параметров:
$id = $_GET['id'];
Выбор метода зависит от ваших потребностей и особенностей проекта. Часто использование сессий более безопасно, так как параметры не отображаются в URL, но в некоторых случаях передача параметров через URL более удобна.