开发者

base64 encode is giving me strange results after using url rewrite

I have a really strange problem

ok the problem is thus

let say I have this url

http://www.example.com/?file=WFS010C.part3.rar&url=http://www.fileserve.com/file/vEpByp3/WFS010C.part3.rar

If I do base64_encode($_GET['url'])

the results is this

aHR0cDovL3d3dy5maWxlc2VydmUuY29tL2ZpbGUvdkVwQnlwMy9XRlMwMTBDLnBhcnQzLnJhcg==

after applying this rewrite condition

RewriteEngine On
RewriteBase /
RewriteRule ^file-(.*)-(.*)\.html$ index.php?file=$1&url=$2

The url is like this

http://www.example.com/file-WFS010C.part3.rar-http://www.fileserve.com/file/vEpByp3/WFS010C.part3.rar.html

now if I do base64_encode($_GET['url'])

the results is this

aHR0cDovd3d3LmZpbGVzZXJ2ZS5jb20vZmlsZS92RXBCeXAzL1dGUzAxMEMucGFydDMucmFy

**Note that the value of $_GET['url'] is exactly the same in both cases if printed without encoding!!!!

开发者_如何学Gohow come same string giving different results just after using rewrite ?**

Does anyone know whats the problem


You can use base64_decode to see whether they are same.

In fact:

The first one is http://www.fileserve.com/file/vEpByp3/WFS010C.part3.rar

And the second one is http:/www.fileserve.com/file/vEpByp3/WFS010C.part3.rar

You can see, they are not same.


You are rewriting your URl so the part after the second - is stored in url parameter. So in second case you receive url = http://www.fileserve.com/file/vEpByp3/WFS010C.part3.rar.html. Just like you had before.

What you are encoding is marked with bold:

With first url

http://www.example.com/?file=WFS010C.part3.rar&url=http://www.fileserve.com/file/vEpByp3/WFS010C.part3.rar

With second URL you are rewriting it to

http://www.example.com/index.php?file=WFS010C.part3.rar&url=http://www.fileserve.com/file/vEpByp3/WFS010C.part3.rar

UPDATE your second base64_encoded URL is decoding to http:/www.fileserve.com/file/vEpByp3/WFS010C.part3.rar. Note single / after http. Are you sure you have no typos in second URL?


First you need to urlencode the 'url' parameter. I'm guessing the parameter does not get correctly parsed because of invalid characters like '/' in it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜