Search code examples
phphttp-redirectheader

PHP header ( ) not working


I'm trying to redirect the user if their input is not in the database

$checkid = $_POST["id"];

$query = "SELECT id, Status FROM profileinfo WHERE id=$checkid";

$res = mysqli_query($link, $query);

$nres = mysqli_num_rows($res);

if ($nres == 0) {
    header( "Location: login.php"));
    exit();
}

And it doesn't redirect .. it just gives a blank page. There aren't any HTML tags before or after, nor any echo's.


Solution

  • You have one ) too many in header( "Location: login.php"));

    Use:

    header("Location: login.php");
    

    Plus I believe the space between ( and " could also have an effect. I've seen it happen before.

    Sidenote: Using an absolute URL (http://) over a relative one is recommended, as Dagon noted and is also mentioned in the manual on PHP.net

    Edit: I must admit, I made a slight mistake about the space between ( and " however there is some truth to this as I got mixed up with having a space between " and Location should that ever happen (to anyone reading this); the header will not redirect. I.e.: header(" Location: login.php"); would be invalid. This has been tested.