Page MenuHomePhabricator

Fix "AphrontRequest->getRequestURI()" for requests with "x[]=1" parameters in the URI
ClosedPublic

Authored by epriestley on Feb 12 2019, 1:42 PM.
Tags
None
Referenced Files
F18770719: D20147.id48107.diff
Wed, Oct 8, 2:27 PM
F18768276: D20147.id48115.diff
Wed, Oct 8, 2:40 AM
F18767854: D20147.id.diff
Wed, Oct 8, 12:32 AM
F18764485: D20147.diff
Tue, Oct 7, 6:19 AM
F18673058: D20147.id.diff
Thu, Sep 25, 9:12 AM
F18569412: D20147.id48115.diff
Sep 10 2025, 1:37 AM
F18569408: D20147.id48107.diff
Sep 10 2025, 1:37 AM
F18083423: D20147.id48107.diff
Aug 5 2025, 10:02 AM
Subscribers
None

Details

Summary

Ref T13250. See PHI1069. This is a small fix for getRequestURI() currently not working if the request includes "x[]=..." PHP-flavored array parameters, beacause they're parsed into arrays by $_GET and setQueryParams(...) no longer accepts nonscalars.

Instead, just parse the raw request URI.

Test Plan

Visited /search/hovercard/?phids[]=X, no more fatal. Dumped the resulting URI, saw it had the right value. Tried ?phids[]=x&x=1&x=1&x=1, saw the parameters correctly preserved.

Diff Detail

Repository
rP Phabricator
Branch
hover1
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 21950
Build 29972: Run Core Tests
Build 29971: arc lint + arc unit

Event Timeline

This revision is now accepted and ready to land.Feb 12 2019, 6:49 PM

There's some small possibility that $_GET and REQUEST_URI do not agree in some environments and that this will create even more problems. However, they agree locally, and we already use REQUEST_URI in some other cases without issues, and I couldn't find any internet evidence that REQUEST_URI is suspect.

We do have some code to turn a bag of PHP-flavored parameters into a query string (AphrontRequest::flattenData()) so we could just flatten $_GET, but that code is pretty icky so I'm hoping we can get away without increasing our reliance on it.

This revision was automatically updated to reflect the committed changes.