Fixed XF\Validator\Url::coerceValue does not apply schema for non-www URLs

DragonByte Tech

Well-known member
Affected version
2.2.6pl2
Problem:
When using the XF\Validator\Url class to validate URLs, entering a non-www URL does not correctly apply the schema.

Test Cases:
https://google.com works.
www.google.com works.
google.com does not, and asks to input a valid URL.

Suggested Fix:
Apply the following below else if (substr(strtolower($value), 0, 4) == 'www.')
PHP:
        else
        {
            $scheme = parse_url($value, PHP_URL_SCHEME);
            if ($scheme === null)
            {
                /** @noinspection HttpUrlsUsage */
                $value = 'http://' . $value;
            }
        }

Notes:
I used === because of the following note in the php.net documentation for parse_url: "On seriously malformed URLs, parse_url() may return false."
 
Thank you for reporting this issue, it has now been resolved. We are aiming to include any changes that have been made in a future XF release (2.2.7).

Change log:
Properly coerce URLs that may not begin with "www."
There may be a delay before changes are rolled out to the XenForo Community.
 
Back
Top Bottom