2012-12-09 16 views
15

ho URL come questo http://localhost/join/prog/ex.phprimuovere parametri GET in URL dopo la trasformazione è terminato (non si usa POST), PHP

Quando uso il metodo GET l'indirizzo URL come questo http://localhost/join/prog/ex.php?name=MEMORY+2+GB&price=20&quantity=2&code=1&search=add

La mia domanda è: così , Utilizzo ancora il metodo GET ma voglio che dopo l'elaborazione nel metodo GET sia terminato, voglio tornare all'URL (remove parameter) in http://localhost/join/prog/ex.php, come in precedenza (non usando il metodo POST). Come posso farlo?

+0

È possibile eseguire un reindirizzamento dell'intestazione, ma a quale fine? –

+0

senza perdere le variabili? non riesco a capire il motivo per cui lo faresti, ma comunque html5 pushState – Popnoodles

+0

@pekka: Nessun reindirizzamento, ma voglio rimuovere i parametri una volta terminato l'utilizzo del metodo GET (basta rimuovere il parametro) – dtnder

risposta

27

Inserisci questo nel file HTML (HTML5).

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

Oppure utilizzare una soluzione di back-end utilizzando una sessione, ad esempio;

<? 
    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.. 
    } 
+0

' '. Funziona, grazie. – dtnder

+2

La soluzione JS funziona solo con browser compatibili con HTML5. La versione back-end funziona in ogni situazione. – Sanne

+0

' " Questo funziona benissimo grazie –

0

Se si utilizza apache, è consigliabile utilizzare un file .htaccess con mod_rewirte. Here un quickstart. Penso che questo risultato possa essere ottenuto su iis anche con il file web.config

1

suppongo che dopo aver chiamato l'url si voglia reindirizzare al file ex.php, ma questa volta senza parametri. per quella prova utilizzando il seguente codice nel 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!"; 
} 
?> 

qui quello che u fatto id solo redirect redirect alla stessa pagina senza controllare se qualsiasi parametro è là nella stringa di query. il codice controlla in modo intelligente la presenza dei parametri, id tutti i parametri ci sono, reindirizzerà su ex.php altrimenti stamperà "Hi no parameters present!" stringa!

5

risposta semplice

Basta collocare questo nella parte superiore del file è necessario effettuare la GET querys scompaiono dalla barra degli indirizzi del browser dopo il caricamento.

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