[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 727
  • Last Modified:

Retrieve session data after page forwarding using the header function

I am trying to have persons register to my website and then have Welcome <name they registered with> on the next page.
I saved formation to a session as follows in the register.php page:
$_SESSION['username']= $username;

I then forwarded the user to the hello.php where they would be greeted with the welcome message as follows:
header('Location:hello.php');

Next, I tried to retrieve information from the session variable in the hello.php as follows:
$username = $_SESSION['username'];
echo $username;

However, the username did not appear. What am I doing wrong and how can I fix it?
See code below (register.php and hello.php).
.........................Hello.php............................
<?php
session_start();
 
$username = $_SESSION['username'];
echo $username;
 
echo 'Registration successful';
session_write_close();
?>
 
 
 
..........................................Register.php...................................................
<html>
<head>
<title>Registration form</title>
</head>
 
<body>
 
<h3>Registration Form</h3>
 
<?php
session_start();
define('SALT_LENGTH', 9);
if(isset($_POST['sendUsername']))
{
    $username = $_POST['username'];
    $password1 = $_POST['password1'];
    $password2 = $_POST['password2'];
    	if(empty($username))
   	{
      	echo "You haven't filled in username!<br/>";
    	}
    	if(empty($password1))
    	{
        	echo "You haven't filled in password!<br/>";
    	}
    	else if(!preg_match("/^[a-zA-Z0-9.,?_]+$/",$password1))
    	{
		echo "You have entered an invalid password!<br/>";
	}
	else if(strlen($password1)<5)
	{
		echo "Your password must be at least 5 characters long!<br/>";
	}
	if(empty($password2))
    	{
        	echo "You haven't retyped your password!<br/>";
     	}
	else if(!preg_match("/^[a-zA-Z0-9.,?_]+$/",$password2))
    	{
		echo "You have entered an invalid password!<br/>";
	}
	else if(strlen($password2)<5)
	{
		echo "Your password must be at least 5 characters long!<br/>";
	}
	else if($password1!=$password2)
	{
		echo "Your password must be the same!<br/>";
	}
	else
	{
		$dbServer = '127.0.0.1';
		$dbUser = 'alpha';
		$dbPass = 'qwerty';
		$dbName = 'myusers';
 
		$conn = mysql_connect($dbServer, $dbUser, $dbPass) or
			die('Error connecting to mysql' . mysql_error());
		$db = mysql_select_db($dbName, $conn) or
			die('Error selecting database' . mysql_error());
		$username = mysql_real_escape_string($username);
		$password = generateHash($password1);
		$query1 = "SELECT * FROM users WHERE username = '$username'";
		$result = mysql_query($query1);
		if (mysql_fetch_assoc($result)!=0)
		{
			echo "The user name entered is already taken";
		}
		else 
		{
			$query = "INSERT INTO users(username, passwordHash) VALUES('$username','$password')";
			//mysql_query($query);
			$_SESSION['username']= $username;
			header('Location:hello.php');
		}
		
		
		mysql_close($conn);
	}
}
 
 
function generateHash($plainText, $salt = null)
{
    if ($salt === null)
    {
        $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH);
    }
    else
    {
        $salt = substr($salt, 0, SALT_LENGTH);
    }
 
    return $salt . sha1($salt . $plainText);
}
session_write_close();
?>
 
<p>
 
<form method="post" action="register.php">
<b>Username:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b><input name="username" type="text" size="20"  value="<?php echo $username; ?>"><br/>
<b>Password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b><input name="password1" type="password" size="20"  value="<?php echo $password1; ?>"><br/>
<b>Retype password:</b><input name="password2" type="password" size="20"  value="<?php echo $password2; ?>"><p>
<input name="sendUsername" type="submit" value="submit">
</form>
 
</body>
</html>

Open in new window

0
kgpretty
Asked:
kgpretty
  • 2
1 Solution
 
Roger BaklundCommented:
In Register.php, you must call session_start() before you send any output to the browser. Start it like this:

<?php session_start(); ?>
<html>
<head>
<title>Registration form</title>
</head>
0
 
kgprettyAuthor Commented:
Where should lines 26 - 111 go?
0
 
toymachiner62Commented:
I think they'll be alright. Just try putting line 25 at the very beginning
0
 
kgprettyAuthor Commented:
Thanks
0

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now