redirect to another page

i have some PHP script that i need to authenticate a user and if a session is empty to redirect the user to another page



HERE IS MY CODE
<?php
session_start(); 
//if the session is registered to a valid user then show content 
if ($_SESSION["Username"])
 { 
print "Welcome      ".$_SESSION["Username"]."".$HTTP_SESSION_VARS["initial"].
" $surname<br>";
echo date("l, F d, Y h:i" ,time());
echo "";
echo "  Your IP Address ";
echo $_SERVER["REMOTE_ADDR"];
} 
//not registered session 
else
{ 
echo "What are you doing here";
} 
//var_dump($_SESSION);
?>

Open in new window

LVL 1
Chris JonesLead Application Web DeveloperAsked:
Who is Participating?
 
AlexanderREnterprise Web DeveloperCommented:
I suggest we isolate the problem to be sure if its something with SESSION variables logic or having an output before the header.  This is an alternative way to redirect using javascript.  If it works, then there is a problem with an output before header function.  If it does not, then its with SESSION.


<?php
session_start(); 
//if the session is registered to a valid user then show content 
if ($_SESSION["Username"])
 { 
print "Welcome      ".$_SESSION["Username"]."".$HTTP_SESSION_VARS["initial"].
" $surname<br>";
echo date("l, F d, Y h:i" ,time());
echo "";
echo "  Your IP Address ";
echo $_SERVER["REMOTE_ADDR"];
} 
//not registered session 
else
{ 
echo '<script language="text/javascript">
window.location = "members.php";
</script>';
} 
//var_dump($_SESSION);
?>

Open in new window

0
 
hieloCommented:
try:
<?php
session_start(); 
//if the session is registered to a valid user then show content 
if ($_SESSION["Username"])
 { 
print "Welcome      ".$_SESSION["Username"]."".$HTTP_SESSION_VARS["initial"].
" $surname<br>";
echo date("l, F d, Y h:i" ,time());
echo "";
echo "  Your IP Address ";
echo $_SERVER["REMOTE_ADDR"];
} 
//not registered session 
else
{ 
	header("Location: otherpage.php");
	exit;
} 
//var_dump($_SESSION);
?>

Open in new window

0
 
Chris JonesLead Application Web DeveloperAuthor Commented:
still stays at the same page ?
0
Cloud Class® Course: Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

 
AlexanderREnterprise Web DeveloperCommented:
hielo's suggestion is fine, but only if you have no output (not even a blank space) generated by php before line 16.
Make sure there is no output at all before that.
0
 
hieloCommented:
change:
if ($_SESSION["Username"])

to:
if ( isset($_SESSION["Username"]) && !empty($_SESSION['Username']) )
0
 
Chris JonesLead Application Web DeveloperAuthor Commented:
AlexanderR:

so will this cause the problem
<?php
session_start(); 
//if the session is registered to a valid user then show content 
if ($_SESSION["Username"])
 { 
print "Welcome      ".$_SESSION["Username"]."".$HTTP_SESSION_VARS["initial"].
" $surname<br>";
echo date("l, F d, Y h:i" ,time());
echo "";
echo "  Your IP Address ";
echo $_SERVER["REMOTE_ADDR"];
} 
//not registered session 
else
{ 
echo "What are you doing here";
	header("Location: members.php");
} 
//var_dump($_SESSION);
?>

Open in new window

0
 
hieloCommented:
>>so will this cause the problem
Not sure how that is different from your original code, which you already know does not work. You need to make sure the SESSION variable is valid or else redirect:
<?php
session_start();
 
//if the session is registered to a valid user then show content 
if( isset($_SESSION["Username"]) && !empty($_SESSION["Username"]) )
{ 
	echo "Welcome      ".$_SESSION["Username"]."".$HTTP_SESSION_VARS["initial"]." $surname<br>";
	echo date("l, F d, Y h:i" ,time());
	echo "";
	echo "  Your IP Address ";
	echo $_SERVER["REMOTE_ADDR"];
} 
//not registered session 
else
{ 
	header("Location: otherpage.php");
	exit;
} 
?>

Open in new window

0
 
Chris JonesLead Application Web DeveloperAuthor Commented:
sorry i mean

AlexanderR:
POSTED "hielo's suggestion is fine, but only if you have no output (not even a blank space) generated by php before line 16.
Make sure there is no output at all before that."
0
 
Chris JonesLead Application Web DeveloperAuthor Commented:
the session varables are valid i am printing the user name ou to the screen and i also did a
var_dump($_SESSION);
witch gives me all my values
0
 
Chris JonesLead Application Web DeveloperAuthor Commented:
hielo:

this did not work


if ( isset($_SESSION["Username"]) && !empty($_SESSION['Username']) )
 { 
print "Welcome      ".$_SESSION["Username"]."".$HTTP_SESSION_VARS["initial"].
" $surname<br>";
echo date("l, F d, Y h:i" ,time());
echo "";
echo "  Your IP Address ";
echo $_SERVER["REMOTE_ADDR"];
} 
//not registered session 
else
{ 
echo "What are you doing here";
	header("Location: members.php");
} 

Open in new window

0
 
hieloCommented:
If your page is to redirect, you CANNOT send output to the browser. So this will NOT work:
echo "What are you doing here";
header("Location: members.php");

because the echo sends output to the browser so the redirection will be canceled. Get rid of the echo statement.
0
 
Chris JonesLead Application Web DeveloperAuthor Commented:
ok this just gives me a blank page and does not redirect to another page
0
 
hieloCommented:
try using the full url to the page and follow it with exit:
...
else
{
 header("Location: http://www.yoursite.com/some/directory/members.php");
 exit;
}
0
 
Chris JonesLead Application Web DeveloperAuthor Commented:
this still did not work  it bombs on the if statement it only shows half the screen
0
 
hieloCommented:
>>it bombs on the if statement it
What is "bombs" to you? Are saying it is going into the if clause but having problems there?

Try changing:
$HTTP_SESSION_VARS["initial"]

to:
$_SESSION["initial"]
0
 
Chris JonesLead Application Web DeveloperAuthor Commented:
this did not fix the problem it just gave me a blank page it did not redirect it allowed me in the page
0
 
AlexanderREnterprise Web DeveloperCommented:
so sorry for this round about discussion.

I made a slight mistake
echo '<script language="text/javascript">
should be
echo '<script type="text/javascript">
0
 
Chris JonesLead Application Web DeveloperAuthor Commented:
ok this worked great
0
 
Chris JonesLead Application Web DeveloperAuthor Commented:
i finally got help with this problem great help thanks guys
0
 
AlexanderREnterprise Web DeveloperCommented:
I am glad that my suggestion worked, but you should NOT use it for something as serious as validating a user, because all they have to do is turn their JS off and they are in.

This was just a trouble shooting step.  Because my example worked, we know SESSION variables are OK and if statements are OK. The problem is now that you have some sort of output going before "header" function.

I strongly suggest that you thoroughly check all of your code to make sure that there is not even a blank space escaping the server before "header" is called.  There should be nothing, no spaces, between or after ?> signs.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.