HTML PHP Display username after success login

I have a <div> inside my onlinestore.html file which is my menu that contain of Login/Register. What I want is after the success login, the <div> for login/register change to the username. What i’hv done wont display the expected output that i want.So is there something wrong about my code?

Here is what I’ve done:

onlinestore.html

<li class='active' style='float:right;'>
  <?php 
  session_start();
    if($_SESSION['logged']==true){ 
        echo $_SESSION["username"];
        echo '<a href="logout.php" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>Logout</span></a></li>';
        }
    elseif($_SESSION['logged']==false) 
        echo '<a href="registerform.html" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>Login/Register</span></a></li>';
    ?>

Here is another file
checklogin.php:

if($count==1){
  session_start();
  $_SESSION['logged']=true;
  $_SESSION ['username']=$myusername;
  header("refresh:1;url=onlinestore.html");
  }
else{
   $_SESSION['logged']=false;
   header("refresh:2;url=login.html");}

Here is the expected output:

Before Login
enter image description here

After Login
enter image description here

Here is what i get with the code above:
My code wont work

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

Either you need to rename your onlinestore.html and login.html to be .php files so the PHP will work in them, or use the addtype option in your htaccess file.

In your onlinestore.html do this:

<?php
session_start(); // Right at the top of your script
?>

<li class='active' style='float:right;'>
  <?php 
  if($_SESSION['logged']==true)
    { 
      echo $_SESSION["username"];
      echo '<a href="logout.php" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>Logout</span></a></li>';
    }
  elseif($_SESSION['logged']==false)
    {
      echo '<a href="registerform.html" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>Login/Register</span></a></li>';
    }
  ?>

In your checklogin.php do this:

<?php
session_start(); // Right at the top of your script
?>

if($count==1)
  {
    $_SESSION['logged']=true;
    $_SESSION['username']=$myusername;
    header("Location: onlinestore.html");
    exit();
  }
else
  {
     $_SESSION['logged']=false;
     header("Location: login.html");
     exit();
  }

If the above doesn’t work then please tell me what happens.
Do you have html files set to parse PHP code?
Or a htaccess file with:
AddType application/x-httpd-php .htm .html
?

EDIT

Try this for debugging:

In your checklogin.php do this:

<?php
session_start(); // Right at the top of your script
?>

if($count==1)
  {
    $_SESSION['logged']=true;
    $_SESSION['username']=$myusername;
    echo "Login worked";
    exit();
  }
else
  {
     $_SESSION['logged']=false;
     echo "Login failed";
     exit();
  }

This will show you if login is working. If it’s not and you get “login failed” then that is why you get the “Login/Register” link on your page.

If it shows “Login worked” then set the code back to how it was and then on your onlinestore.html page, do this at the top of the file:

echo "This is working";
exit();

What happens? Do you get the message “This is working” on the page and nothing else?

Solution 2

In your else statement you haven’t defined a session_start() like you did in your if statement.

And else, instead of checking the value of a $_SESSION and determining the value of it, you can use the following:

if (session_status() == PHP_SESSION_NONE) {
//Do something if the session is not existing
}

Other options are storing variables in a $_COOKIE and then check if it isset or not(if(isset($_COOKIE["username"]){})

I hope this has helped you out

Solution 3

If you want the username to be displayed instead like in the example you need to change your code for onlinestore.html to the following:

<li class='active' style='float:right;'>
  <?php 
    session_start();
    if($_SESSION['logged']==true){ 
      echo '<a href="logout.php" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>' + $_SESSION["username"] + ' (Logout)</span></a></li>';
    }
    elseif($_SESSION['logged']==false) 
      echo '<a href="registerform.html" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>Login/Register</span></a></li>';
  ?>

Solution 4

I think your PHP should look something like that:

<?php 
session_start();
username = $_SESSION["username"]
if($_SESSION['logged'] == true) { 
    echo '<a href="logout.php" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>' . username. 'Logout</span></a></li>';
    }
else {
    echo '<a href="registerform.html" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>Login/Register</span></a></li>';
}
?>

Use either brackets in both if and else or use none. By the way you don’t need an elseif if you’re only checking a boolean. (there are only 2 possibilities)

Solution 5

Well, there is a lot of code missing.

Where is your login script?

First, you need a <form> with the input fields (login and password) and a submit button.

For example:

<form action='login.php' method='post'>
<input type='text' name='loginname'></input>
<input type='password' name='loginpassword'></input>
<input type='submit'>Submit</input>
</form>

Your login.php

<?php 
session_start();
// Dont forget to check your variables
$loginname = $_POST["loginname"];
$password = $_POST["loginpassword"];
// Check the correct login (for example with a database)
if ($login_correct) {
    $_SESSION["username"] = $loginname;
    $_SESSION["logged"] = true;
    header("index.html");
    exit;
else {
    $_SESSION["logged"] = false;
    header("registerform.html");
    exit;


   }
}
?>

In your index.html you can do:

<?php 
session_start();
if($_SESSION['logged'] == true){ 
    echo $_SESSION["username"];
    echo '<a href="logout.php" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>Logout</span></a></li>';
}
else {
    echo '<a href="registerform.html" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>Login/Register</span></a></li>';
}
?>

Solution 6

<div class="msg"><?php echo $msg;?></div>
<form type="submit">
   <input type="text" name="Email">
   <input type="password" name="Password">
   <button type="submit" name="Login">Login</button>
</form>
<?php
  require 'connection.php';
  if (isset($_POST['Login'])) {
      $email = $_POST['Email'];
      $password = $_POST['Password'];

      $user = "SELECT username FROM table_name WHERE email = '".$email."' and password = '".$password."'";
      $user = mysqli_query($con, $user);
      if (mysqli_num_rows($user) > 0) {
         while ($row = mysqli_fetch_array($user)) {
               $username = $row['username'];
         }
      } else {
                $msg = "Can't Log in";
      }
    }
     echo $username;
   ?>

Solution 7

Try this. I don’t how to explain but when the login is successful I created the session variable. If the session variable is not in used it will echo the Login that will link to login page otherwise if session variable is being used it will print the username

code in process of logging in

        if($row['col_userName'] == $username AND $row['col_custPass'] = $password){
             $_SESSION['session_var_user'] = $username; // I created the session variable also don't forget to put the session_start(); at the top of your code
            echo "
                    <script> 
                      window.location.href = 'index.php';
                    </script>
                ";
            }else{echo "failed";}

code in navbar

        <li class="nav-item">
            <a class = "justtextstyle" href="#" rel="nofollow noreferrer noopener">
                <?php 
                   if(!isset($_SESSION['session_variable']))
  // if(!isset($_SESSION['session_variable'])) checking if $_SESSION['session_variable' is in use; sorry idk to explain, it's just like that lol 
                   {
                       echo "<a class = 'justtextstyle' href='login.php'>Log In Here</a>";
                   }
                   else
                   {
                       echo "Hi," . $_SESSION['session_variable'];
                   }
               ?>
            </a>
        </li>   

Solution 8

Maybe you want to try this instead, it worked for me.

<?php 
  if($_SESSION['username'] == true) { 
     echo '<a href="logout.php" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener"><span>Logout</span></a>';
  }
  else {
    echo '<a href="login.php" rel="nofollow noreferrer noopener"><span>Login</span></a>';
  }
?>

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply