I can't see any problem with the absolute_url function, but I'd go through a few checks just in case:
After the line that reads:
$url = absolute_url('submissions_grid.php');
What do you get if you add a
print $url;
(obviously ignoring the headers already sent error you might get); does it display the URL you expected?
I'm not sure about your login check. AFAIK, your list() is expecting a scaler and an array, yet you are expecting these to be returned from a function which should only be returing one variable, which could be a scaler OR an array, and not both. Are you sure that this is the best way to do it? Maybe instead, you could pass the two variables by reference, like this:
$check = false;
$data = Array();
check_login($connection, $_POST['email'], $_POST['password'], $check, $data);
and then in your check_login() function, accept the parameters like this:
check_login($connection, $email, $password, &$check, &$data);
One final possible cause of the problem, are you validating the $_POST variables you are using before you send them to any queries in the check_login() function? If the password, for example, had an apostrophe in, it could cause all sorts of havoc with your query.