0

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.

3
  • If your query returns a result, from what you've posted here, a blank page is to be expected? Commented Feb 28, 2014 at 2:00
  • Are you sure there is no whitespace or extra lines printed before the header()? I've been there some times and the error is invisible to the eye but not to HTML ;) Commented Feb 28, 2014 at 2:00
  • 1
    Make sure there is NO output (echo, print, whitespace before the <?php tag, etc...) before the header call. Commented Feb 28, 2014 at 2:00

4 Answers 4

3

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.

Sign up to request clarification or add additional context in comments.

5 Comments

also,absolute URI is recommended over relative.
Thanks! holy sh... i can't believe i didnt see that lol, im thanking both because you apparently did answered at the same time lol. Ok! ill use absolute url then!
@Dagon True, I agree on the absolute method.
meant to comment that on the op, but all good, you are getting close to joining the 10k club :-)
Will upvote your comment @Dagon and include in an edit.
2

There is an extra ), have you checked the syntax error?

header( "Location: login.php"));
                              ^

3 Comments

actually @xdazz answered 9 seconds faster
I'd recommend while developing you set the following PHP options: display_errors On error_reporting -1 html_errors On Then you'll see what's going on instead of an unhelpful blank screen :)
@contrebis thanks! how do i that? i just type "display_errors On error_reporting -1 html_errors On" in my php code?
0

I got fed up typing in a comment box, so here's an alternative answer :)

The root problem is the unhelpful blank screen, while you are developing you want to see any errors that come up.

I'd recommend you set the following PHP options:

display_errors On
error_reporting -1
html_errors On

How to add these settings? Depends on your exact system... but if you have an apache server the easiest way is probably to add a file named .htaccess in the same folder as your PHP files. In that case your file will look like this:

# this is your .htaccess file
php_flag display_errors On
php_value error_reporting -1
php_flag html_errors On

Apache will read this file and pass the runtime settings to PHP. More info here:

https://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

and here:

http://www.php.net/manual/en/configuration.changes.php

One extra piece of advice - when you launch your site change display_errors to Off so you don't give hackers a helping hand.

Comments

0

If you have other issues try ob_clean() and than ob_start() at the start of your file.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.