Nihat Özyedi Nihat Özyedi - 5 months ago 133
PHP Question

How do i show logged in username in bootstrap navbar after login

I have login button on my navbar, its opening login modal.
I want to change login button with username who logged in that modal.

I'am a newbee in php and mysqli. One week and i'm here. Pls give me explained directions about my problem, else i'cant understand :)

Here is my codes;

index.php

<?php
include 'config/setup.php'; //database connection here
session_start();
?>

<!doctype html>
<html>
<head>
<!-- showing title dynamicly -->
<title><?php echo $page['title'].' | '.$site_title; ?></title>

<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" type="image/x-icon" href="img/favicon.png">

<?php include "config/css.php"; ?> <!-- bootstrap css links -->
<?php include "config/js.php"; ?> <!-- jquery javascript links -->
</head>
<body>

<?php include (D_TEMPLATE.'/navigation.php'); ?> <!-- including navbar -->

<div class="container">
<!-- body items will be here -->
</div>

<?php include (D_TEMPLATE.'/footer.php'); ?> <!-- including footer-->

</body>

</html>


navigation.php

<?php include 'config/js.php'; ?>

<!-- Navbar -->
<nav class="navbar navbar-inverse">
<div class="container">
<div class="navbar-header"><img src="img/brand.png"></div>

<ul class="nav navbar-nav">
<?php nav_main($dbc, $pageid); ?> <!-- Im showing page links dynamicly in mysql database -->
</ul>

<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
<a href="#"> <i class="fa fa-search fa-lg" style="color:#FFFFFF;" aria-hidden="true"></i></a>
</div>
</form>


<div class="navbar-form navbar-right">

<?php

if(isset($_POST['login'])){
require 'config/dbc.php';
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysqli_query($dbc, "SELECT * FROM users WHERE username = '$username' AND password = '$password'");
if(mysqli_num_rows($result) == 1){
$_SESSION['username'] = $username;
echo $username;
}else{
echo "problem";
}
}

?>
<!-- Modal Login Button, i'm asking to erase this and write $username when user logged in, php codes is here because of this. In this situation, writing username WITH buttons, i want to erase that buttons after user logged in, it has to be write only username after login. I've tried echo this buttons after }else{ code; but any buttons not shown before login.I'm trying trying trying -->
<button id="login" name="login" class="btn btn-primary"><i class="fa fa-sign-in" aria-hidden="true"></i> Login</button>

<!-- It will be register modal button, i will work on it later -->
<button id="register" name="register" class="btn btn-success"><i class="fa fa-user-plus" aria-hidden="true"></i> Register</button>
</div>

</nav>


<!-- Here is my Login Modal -->

<section id="modal" class="modal fade">
<div class="modal-body">

<form method="post" action="index.php">

<div class="form-group">
<h4><i class="fa fa-sign-in" aria-hidden="true"></i> Login to Your Account
<a href="#"><span id="close" class="glyphicon glyphicon-remove-circle pull-right"></span></a></h4>
</div>

<div class="form-group">
<label for="username">Username</label>
<input type="text" name="username" class="form-control" id="username" placeholder="Enter username">
</div>

<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password" class="form-control" id="password" placeholder="Enter password">
</div>

<div class="checkbox">
<label><input type="checkbox">Remember Me</label>
<button class="btn btn-primary pull-right" data-dismiss="modal">Close</button>
<button type="submit" name="login" class="btn btn-danger pull-right"><i class="fa fa-sign-in" aria-hidden="true"></i> Login</button><br><br>
<a href="#"><label>Forgot password?</label></a>
</div>

</form>

</div>
</section>


<!-- It will be my Register Modal -->
<section id="modal_register" class="modal fade">
<div class="modal-body">

<form action="" method="post" role="form">

Register Here

<button id="submit" class="btn btn-danger">Login</button>

</form>

</div>
</section>

Answer

If Everything else is sorted out usually something like this can work for you

<button id="login" name="login" class="btn btn-primary"><i class="fa fa-sign-in" aria-hidden="true"></i>  
    <?php if (isset($_SESSION['username'])) : ?>
       <?php echo $_SESSION['username'] ?>
    <?php else: ?>
       Login
    <?php endif ?>

</button>

OR after removing the id

    <?php if (isset($_SESSION['username'])) : ?>
       <button class="btn btn-primary"><i class="fa fa-sign-in" aria-hidden="true"></i>  <?php echo $_SESSION['username'] ?> </button>
    <?php else: ?>
       <button id="login" name="login" class="btn btn-primary"><i class="fa fa-sign-in" aria-hidden="true"></i> Login</button>
    <?php endif ?>

Let me know if you have any problems understanding this code