I am trying to add a few different GET variables to the url.
I could easily do a header redirect to the current page url and then just add the $_GET['test'] in the url.
My problem is that I have some GET variables that are in the url already. What I want to do is:
Check if there are any GET variables in the url
If there is not, then redirect to the current url with the new GET['test'] variable at the end of the url.
If there is, but there is no GET['test'] variable in the url, then keep those other GET values in the url and add the GET['test'] variable to end of the full url string
If there is, AND there is a GET['test'] variable in the url, then keep those other GET values in the url and exchange the GET['test'] variable value with the new value.
How can I go about checking for all these conditions?
The simple way to it is:
$params = array_merge( $_GET, array( 'test' => 'testvalue' ) );
$new_query_string = http_build_query( $params );
This doesn't guarantee that test
will be at the end. If for some odd reason you need that, you can just do:
$params = $_GET;
unset( $params['test'] );
$params['test'] = 'testvalue';
$new_query_string = http_build_query( $params );
Note, however, that PHP query string parameter parsing may have some interoperability problems with other applications. In particular, PHP doesn't accept multiple values for any parameter unless it has an array-like name.
Then you can just forward to
( empty( $_SERVER['HTTPS'] ) ? 'http://' : 'https://' ) .
( empty( $_SERVER['HTTP_HOST'] ) ? $defaultHost : $_SERVER['HTTP_HOST'] ) .
$_SERVER['REQUEST_URI'] . '?' . $new_query_string