20

我有这样的网址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 方法中的处理完成后,我想像以前http://localhost/join/prog/ex.php一样将 url 返回(删除参数)(不使用 POST 方法)。我该怎么做?

4

5 回答 5

40

将其放入您的 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..
    }
于 2012-12-09T17:09:42.933 回答
10

简单的答案

只需将它放在文件顶部,您需要使 GET 查询在加载后从浏览器的 URL 栏中消失。

<script>    
    if(typeof window.history.pushState == 'function') {
        window.history.pushState({}, "Hide", '<?php echo $_SERVER['PHP_SELF'];?>');
    }
</script>
于 2015-01-10T00:14:25.400 回答
1

我猜想在调用你想要重定向到文件 ex.php 的 url 之后,但这次没有任何参数。为此尝试在 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!";
}
?>

在这里,你所做的只是重定向重定向到同一页面,而不检查查询字符串中是否有任何参数。代码智能地检查参数是否存在,如果有任何参数,它将重定向到 ex.php,否则它将打印“您好,没有参数存在!” 细绳!

于 2012-12-09T17:07:51.943 回答
0

如果您使用的是 apache,请考虑使用带有 mod_rewirte 的 .htaccess 文件。 这里是一个快速入门。我认为这个结果也可以在 iis 上通过 web.config 文件获得

于 2012-12-09T16:36:39.167 回答
0

您可以为此使用removable_query_args过滤器。

add_filter( 'removable_query_args', function( $vars ) {
        $vars[] = 'name';
        $vars[] = 'price';
        $vars[] = 'quantity';
        $vars[] = 'code';
        $vars[] = 'search';

        return $vars;
    } );

但是您应该为您的案例添加特定条件,否则,它也会从您网站上的所有其他 URL 中删除这些 Get-parameters。更多信息在这里

于 2021-02-11T14:00:11.180 回答