This question already has an answer here:
I'm trying to pass a URL as a parameter, but that URL also has parameters. Of course these parameters are important and must be transmitted and properly interpreted.
For example : http://example.com/myclicktrackingscript.php?source=sidebar&url=http://example.com/redirect_to.php?site=site1
(yes I know, I could click track and redirect all at once in one file, but in some specific situations, I just can't : sometimes I need to pass whatever URL with parameters AS a parameter)
So far i've used URL rewriting : http://example.com/redirect_to.php?site=site1 => http://example.com/redirect/site1/
.. but that's not very handy (too many specific situations where I need more flexibility)
Is there a better way to do that ?
My guess is maybe hashing the parameter URL :
For example : http://example.com/myclicktrackingscript.php?source=sidebar$url=REJREJ12333232rerereE
... but how to "dehash" it properly ?
I've never used such technique, has anyone any examples / tips / advice about how to do so ?
Thanks
While
urlencode
will work, it is also results in messy (looking, IMOHO) output for this task by default. However, it can be cleaned up!This is because some "special characters" are allowed in a query string, thus we can fix the over-encoding to make it look prettier.
This works when $encoded is used in the query portion of the URI.
And should result in a fairly-readable URL like the following. Note the & in the embedded URL is still encoded as it denotes termination between value pairs.
Where human readability is not desired there are also approaches such as base64-encoding the the URL (which must still be made URI-safe) or using a backend to provide a URL-shortener service (which would allow "http://blah.com/?afjnD" style URLs).
However, hashing by itself will not work because (unless the mapping is persisted) the hash function is a one-way operation and the original data is not recoverable.
You should just encode parameter:
And encoded value will be:
http%3A%2F%2Fexample.com%2Fredirect_to.php%3Fsite%3Dsite1
you can use
urlencode
see Demo