I have a function that I call with ?clear-cart
appended to the end of my page; as you can probably guess, this function clears the user's cart.
I call it like this
<a href="?clear-cart">Clear Cart</a>
Which works great (in that it loads the same page, but now the cart is cleared), except that the URL in the address bar now reads
http://test.local/cart?clear-cart
Is there anyway to call ?clear-cart
but have the URL return without the parameter? (Hide it from the user, since I'm only using it for an internal function call??)
You could clear the cart and then immediately redirect using header (obviously before any output!).
<?php
header('Location: http://test.local/cart');
... clear the cart ...
?>
See the PHP reference manual for more details.
Instead of a GET-request use a POST-request?
Something along the lines of this should do what you want:
if (isset($_GET['clear-cart'])) {
clear_cart();
header('Location: http://test.local/');
}
Modify to suit your needs.
You can write your cart clearing code in another script and have it redirect back to your page when it's done.
Well, in the function that clears the cart, you could redirect the user to the correct URL, using the header() function.
Have the page http://test.local/cart link to the page http://test.local/cart?clear-cart, which then redirects the user back to http://test.local/cart.
/cart -> /cart?clear-cart -> /cart
if (isset($_GET['clear-cart'])) {
// Do some cart clearing...
// Redirect back
header('Location: /cart');
exit; // Very important, otherwise the script will continue until it finally redirects
}