Get the full URL in PHP
php, url
Solution
Have a look at `$_SERVER['REQUEST_URI']`, i.e.
$actual_link = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
(Note that the double quoted string syntax is perfectly correct.)
If you want to support both HTTP and HTTPS, you can use
$actual_link = (empty($_SERVER['HTTPS']) ? 'http' : 'https') . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
⚠️ This code has security implications because the client and the server can set `HTTP_HOST` and `REQUEST_URI` to arbitrary values. It is absolutely necessary to sanitize both values and do proper input validation (CWE-20). They must not be used in any security context.
Problem
I use this code to get the full URL: ``` $actual_link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; ``` The problem is that I use some masks in my `.htaccess`, so what we see in the URL is not always the real path of the file. What I need is to get the URL, what is written in the URL, nothing more and nothing less—the full URL. I need to get how it appears in the Navigation Bar in the web browser, and not the real path of the file on the server.
Related problems
- What is the difference between HTTP_HOST and SERVER_NAME in PHP?
- Is $_SERVER['REQUEST_SCHEME'] reliable?
- What do you call the entire first part of a URL?
- Characters allowed in GET parameter
- Absolute URLs omitting the protocol (scheme) in order to preserve the one of the current page
- Is Port Number Required in HTTP "Host" Header Parameter?
- Is the anchor part of a URL being sent to a web server?