it-swarm.com.ru

удалить параметр 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 метод). Как мне это сделать?

17
dtnder

Поместите это в свой HTML-файл (HTML5).

<script>    
    if(typeof window.history.pushState == 'function') {
        window.history.pushState({}, "Hide", "http://localhost/join/prog/ex.php");
    }
</script>

Или используя серверное решение, используя, например, сеанс;

<?php
    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..
    }
33
Sanne

ПРОСТО ОТВЕТ  

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

<script>    
    if(typeof window.history.pushState == 'function') {
        window.history.pushState({}, "Hide", '<?php echo $_SERVER['PHP_SELF'];?>');
    }
</script>
7
Mikeys4u

я думаю, после вызова 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, в противном случае он выведет «Привет, параметры отсутствуют!» строка!

1
Ganesh Rathinavel

Если вы используете Apache, рассмотрите возможность использования файла .htaccess с mod_rewirte. Здесь быстрый старт. Я думаю, что этот результат можно получить и на iis с помощью файла web.config.

0
lelloman