There is script that receives another url as GET parameter:
script.php?file=http://www.google.com&id=123
The problem is:
when url has parameter itself, it is used as script's parameter, not that url's parameter:
script.php?file=http://www.google.com?q=adsf&lang=en&id=123
URL is http://www.google.com?q=adsf&lang=en
, but it is chopped after &
, because it is viewed as related to script.php
itself.
What can I do about this?
I tired to replace &
with %26
, but url get broken with it.
Try to encode every special character like this:
although it might be better and easier to use
rawurlencode()
.Also, read this about URL encoding.
You need to encode the value with the percent-encoding.
If you’re using PHP, use
rawurlencode
(orurlencode
if application/x-www-form-urlencoded is expected):You need to URL encode the entire URL that you are passing as a parameter to another url (your script). %26 is the correct encoding for an &. Just make sure you decode it server-side before using it. You don't say what language(s) you're using, but most, inc javascript and php have native URL encoding functions.