I am trying to get the current page URL, which may look something like this:
http://www.example.com/login.php/?redirect=myprofile.php
...and then get everything after the "redirect". Here is my code so far:
$uri = $_SERVER['REQUEST_URI'];
$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
//the complete URL is
$url = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
//parse URL and return an array containing the URL components
$url_components = parse_url($url);
//check to see if there is anything after the "?" by looking at "query" in the parsed URL
if (array_key_exists(parse_str($url_components['query'], $params), $url_components))
{
echo "query exists in parse_str";
}
else { echo "query doesn't exist in parse_str"; }
However, I keep getting an error if the index query
does not exists in the array:
Notice: Undefined index: query
I've tried isset
:
if (isset(parse_str($url_components['query'], $params)))
which gives me a HTTP ERROR 500 error when loading the page.
and empty
gives me the same error as the first.
if (!empty(parse_str($url_components['query'], $params)))
I'm new to PHP, so any help would be much appreciated.
CodePudding user response:
You don't want to be checking the function call returns. You want to check that the query
index exists. You can achieve that with:
$url = 'http://www.example.com/login.php/?redirect=myprofile.php';
$url_components = parse_url($url);
if (!empty($url_components['query'])){
parse_str($url_components['query'], $params);
print_r($params);
} else {
echo "query doesn't exist in parse_str";
}
parse_str
can then be used when you have the query
index.