PHP处理结束后(不使用POST)删除URL中的GET参数

dtn*_*der 17 html php url get

我有这样的网址 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方法).我该怎么做?

San*_*nne 35

把它放在你的HTML文件(HTML5)中.

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

或者使用会话的后端解决方案;

<?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..
    }
Run Code Online (Sandbox Code Playgroud)

  • JS解决方案仅适用于兼容HTML5的浏览器.后端版本适用于所有情况. (2认同)

Mik*_*s4u 7

简单的回答

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

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