Home » HTML » Pager » Bug #3212
rawurlencode call breaks some links in _getLinksUrl
Details
| Submitted | 2005-01-15 17:36 UTC |
|---|---|
| From | mcallip8 at univie dot ac dot at |
| Assigned | quipo |
| Status | Closed |
| Package | Pager |
| PHP Version | 4.3.10 |
| OS | debian testing |
| Roadmaps | (Not assigned) |
Comments
[2005-01-15 17:36 UTC] mcallip8 at univie dot ac dot at
Description:
------------
I'm not perfectly sure this is a bug, but here's what's happening:
The problem centers on the rawurlencode statements in Pager/Common.php on line 662. What happens is that GET parameters get re-encoded every time a link is
used. This can be a problem if one parameter is a '%'.
Result is as follows:
1st set of generated links:
...<a href="search_url.php?id=%25">... this is okay
2nd set of generated links:
...<a href="search_url.php?id=%2525">... this isn't
Thereby the query value turns into '%25' instead of '%'.
The same rawurlencode call seems to cause the following behaviour:
If the GET parameters contain array values of this kind: "id[]=1&id[]=2", the rawurlencode() call (to $name) changes them to "id%5B%5D=1&id%5B%5D=2"
which is okay the first time, but turns into "id%255B%255D=1&id%255B%255D=2" the second time. Amongst other problems, this causes the checks in lines
637 and 638 to fail, overwriting the id[] array with the last id value.
sample repoduce code: please try the code on your own machine, i can only supply the source
Reproduce code:
---------------
http://homepage.univie.ac.at/patrick.mcallister/test.php.txt
here's a diff against Pager/Common.php for a fix (which works for me, but has not been well tested):
http://homepage.univie.ac.at/patrick.mcallister/diffCommon.php.txt
Expected result:
----------------
$_GET should be:
array(2) {
["a"]=>
array(2) {
[0]=>
string(2) "%"
[1]=>
string(2) "%"
}
["pageID"]=>
string(1) "3"
}
Actual result:
--------------
$_GET becomes:
array(2) {
["a%5B%5D"]=> //instead of a[]
string(4) "%25"
["pageID"]=>
string(1) "4"
}