IF statement header redirect error...

Questions about the MySQL, PostgreSQL, and most other databases, as well as using it with PHP can be asked here.

Moderator: General Moderators

Post Reply
sn202
Forum Commoner
Posts: 36
Joined: Thu Dec 16, 2004 7:30 pm

IF statement header redirect error...

Post by sn202 »

ok i'm using this code now to redirect the site to a certain page depending on the user's role which is calculated from the username using a SQL query.

Code: Select all

<?php
<?php    $username = $_POST['username']; 
        $self =    $_SERVER['PHP_SELF']; 
        $refer =    $_SERVER['HTTP_REFERER']; 
#if either form field is empty return to the login page 
if( ( !$username )  ) 
      { header( "Location:$referer" ); exit(); } 
#connect to MYSQL 
$conn = @mysql_connect( "linuxproj", "***", "****" ) 
        or die( "could not connect" ); 
#select the specified database 
$rs = @mysql_select_db ( "db_sn202", $conn ) 
        or die( "could not select database" ); 
#create the sql query 
$sql="select role from users where username='$username'"; 
#exercute the query 
$rs = mysql_query( $sql, $conn ) 
      or die( mysql_error() ); 
#get number of rows that match username and password 
$num = mysql_numrows( $rs ); 
#if there is a match the login is authenticated 
if( $num > 0 ) 
{ $msq = "Welcome $username - your log-in succeeded"; } 
else #or return to login page 
{ header( "Location:$referer" ); exit(); } 
if ($role == "admin") { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header ("Location: http://www.ecs.soton.ac.uk/~sn202/admin.php");   
    header("Connection: close"); 
} 
if ($role == "tech") { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header ("Location: http://www.ecs.soton.ac.uk/~sn202/tech.php"); 
    header("Connection: close"); 
} 
if ($role == "student") { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header ("Location: http://www.ecs.soton.ac.uk/~sn202/student.php"); 
    header("Connection: close"); 
} 
if ($role == "test") { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header ("Location: http://www.ecs.soton.ac.uk/~sn202/test.php"); 
    header("Connection: close"); 
}          
 
?>


But its doing nothing. Just sitting on roles.php. I'm thinking it may not know what $role is as it is a result of a SQL query and I can't think how to declare it as the result from the sql???

Too tired to think, been sat at a computer for about 14 hours straight now and my brains not working anymore, this is due in tomorrow though, so any help will be much appreciated! cheers.

Si.
kettle_drum
DevNet Resident
Posts: 1150
Joined: Sun Jul 20, 2003 9:25 pm
Location: West Yorkshire, England

Post by kettle_drum »

Umm....

Code: Select all

$refer =    $_SERVER['HTTP_REFERER']; 

//then you use

{ header( "Location:$referer" ); exit(); }
So change the spelling.

Code: Select all

$num = mysql_numrows( $rs );

//should be

$num = mysql_num_rows($rs);
Thats all i can see at the moment.

P.S.

Code: Select all

if($num > 0)
//can just be
if($num)
Skilo
Forum Newbie
Posts: 2
Joined: Tue Dec 28, 2004 10:12 am

Re: IF statement header redirect error...

Post by Skilo »

sn202 wrote:

Code: Select all

<?php

$rs = mysql_query( $sql, $conn )       
   or die( mysql_error() ); 

$num = mysql_numrows( $rs ); 

if( $num > 0 ) { 
    $msq = "Welcome $username - your log-in succeeded"; 
} 
else { 
    header( "Location:$referer" ); exit(); 
}

$rst = mysql_fetch_row($rs);

if ($rst['role'] == "admin") { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header ("Location: http://www.ecs.soton.ac.uk/~sn202/admin.php");   
    header("Connection: close"); 
} 
if ($rst['role'] == "tech") { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header ("Location: http://www.ecs.soton.ac.uk/~sn202/tech.php"); 
    header("Connection: close"); 
} 
if ($rst['role'] == "student") { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header ("Location: http://www.ecs.soton.ac.uk/~sn202/student.php"); 
    header("Connection: close"); 
} 
if ($rst['role'] == "test") { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header ("Location: http://www.ecs.soton.ac.uk/~sn202/test.php"); 
    header("Connection: close"); 
}          
 
?>
Post Reply