Удалить параметр GET в URL после завершения обработки (не используя POST), PHP
У меня есть URL, как это http://localhost/join/prog/ex.php
Когда я использую метод GET, URL-адрес, как это http://localhost/join/prog/ex.php?name=MEMORY+2+GB&price=20&quantity=2&code=1&search=add
Мой вопрос: так, я все еще использую метод GET, но я хочу, чтобы после обработки в методе GET, я хочу, чтобы URL обратно (удалить параметр) в http://localhost/join/prog/ex.php
, как и ранее (без использования метода POST). Как мне это сделать?
5 ответов
Поместите это в свой HTML-файл (HTML5).
<script>
if(typeof window.history.pushState == 'function') {
window.history.pushState({}, "Hide", "http://localhost/join/prog/ex.php");
}
</script>
Или используя серверное решение, используя, например, сеанс;
<?
session_start();
if (!empty($_GET)){
$_SESSION['got'] = $_GET';
header('Location: http://localhost/join/prog/ex.php');
die;
}
else{
if (!empty($_SESSION['got'])){
$_GET = $_SESSION['got'];
unset($_SESSION['got']);
}
//use the $_GET vars here..
}
ПРОСТО ОТВЕТ
Просто поместите это в верхнюю часть файла, который вам нужен, чтобы GET-запросы исчезли из адресной строки браузера после загрузки.
<script>
if(typeof window.history.pushState == 'function') {
window.history.pushState({}, "Hide", '<?php echo $_SERVER['PHP_SELF'];?>');
}
</script>
Я думаю, после вызова URL вы хотите перенаправить в файл ex.php, но на этот раз без каких-либо параметров. для этого попробуйте использовать следующий код в ex.php
<?
if($_GET['name']!='' || $_GET['price']!='' ||$_GET['quantity']!='' ||$_GET['code']!='' || $_GET['search']!=''){
/* here the code checks whether the url contains any parameters or not, if yes it will execute parameters stuffs and it will get redirected to the page http://localhost/join/prog/ex.php without any parameters*/
/* do what ever you wish to do, when the parameters are present. */
echo $name;
print $price;
//etc....
$location="http://localhost/join/prog/ex.php";
echo '<META HTTP-EQUIV="refresh" CONTENT="0;URL='.$location.'">';
exit;
}
else{
/* here rest of the body i.e the codes to be executed after redirecting or without parameters.*/
echo "Hi no parameters present!";
}
?>
здесь то, что вы сделали, id просто перенаправили перенаправление на ту же страницу, не проверяя, есть ли какой-либо параметр в строке запроса. код разумно проверяет наличие параметров, если какие-либо параметры есть, он будет перенаправлен в ex.php, в противном случае он выведет "Привет, параметры отсутствуют!" строка!
Если вы используете apache, попробуйте использовать файл.htaccess с mod_rewirte. Здесь быстрый старт. Я думаю, что этот результат можно получить и на iis с помощью файла web.config.
Вы можете использовать
removable_query_args
фильтр для этого.
add_filter( 'removable_query_args', function( $vars ) {
$vars[] = 'name';
$vars[] = 'price';
$vars[] = 'quantity';
$vars[] = 'code';
$vars[] = 'search';
return $vars;
} );
Но вы должны добавить конкретные условия для вашего случая, иначе он удалит эти Get-параметры и со всех других URL-адресов на вашем сайте. Подробнее здесь