Msg#: 4075462 posted 4:50 pm on Feb 6, 2010 (gmt 0)
We've been using the cgi/perl banner rotator program webadverts for years. It rotates the banners and creates a clickable link like the first link below. Now when you click it has started converting the ; in the link to the html equivalent %3b which breaks the link. You can see it at <snip>. It's the 468x60 link in the top center of the page.
What's causing this? I haven't modified the program in years. example.com/cgi-bin/webadverts/ads.pl?banner=critterpages;time=1265473788;zone=exampledotcom
Msg#: 4075462 posted 8:51 pm on Feb 7, 2010 (gmt 0)
Something changed somewhere, as the query string is now being URL-encoded, whereas before it was not. Perhaps your host upgraded the server, or PERL, or changed some of the default settings?
This points out a good reason to stick with standards and use ampersands instead of 'special' query parameter delimiters like semicolons.
It's interesting that this causes a failure, as most script writers would opt to run the input through a URL-decode function (often a built-in language function) before examining it.
You could use mod_rewrite to fix these requested URLs if they're being requested from your own server, but it might be more appropriate to find out what changed (and why), in case that change might also have some other less-obvious but equally-serious negative effects on your site. Other than that, there would just be the overhead of running the extra code for all "ads.pl" requests.