web-dev-qa-db-fra.com

supprimer le paramètre GET dans l'URL une fois le traitement terminé (sans utiliser POST), PHP

J'ai une URL comme celle-ci http://localhost/join/prog/ex.php

Quand j'utilise la méthode GET, l'adresse URL est la suivante: http://localhost/join/prog/ex.php?name=MEMORY+2+GB&price=20&quantity=2&code=1&search=add

Ma question est la suivante: donc, j'utilise toujours la méthode GET mais je souhaite qu'après le traitement dans la méthode GET soit terminée, je souhaite que l'URL retourne (paramètre remove) dans http://localhost/join/prog/ex.php, comme auparavant (sans utiliser la méthode POST ). Comment puis-je le faire?

17
dtnder

Mettez ceci dans votre fichier HTML (HTML5).

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

Ou en utilisant une solution backend utilisant une session par exemple;

<?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

RÉPONSE SIMPLE  

Placez-le simplement en haut du fichier pour que les requêtes GET disparaissent de la barre d'URL du navigateur après le chargement.

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

je suppose qu'après avoir appelé l'URL que vous voulez rediriger vers le fichier ex.php, mais cette fois sans aucun paramètre . essayez d'utiliser le code suivant dans 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!";
}
?>

voici ce que tu as fait juste rediriger la page vers la même page sans vérifier si un paramètre est présent dans la chaîne de requête. le code vérifie intelligemment la présence de paramètres, id tous les paramètres sont là, il sera redirigé vers ex.php sinon il affichera "Bonjour aucun paramètre présent!" chaîne!

1
Ganesh Rathinavel

Si vous utilisez Apache, envisagez d'utiliser un fichier .htaccess avec mod_rewirte. Ici un quickstart. Je pense que ce résultat peut être obtenu sur IIS aussi bien avec le fichier web.config

0
lelloman