簡體   English   中英

如果用戶登錄,則在引導程序中更改導航欄

[英]Change navbar in bootstrap if user login

我有一個標准菜單,其中包括“登錄”和“創建用戶”的選項。 我想要的是,當您創建用戶或登錄整個導航欄菜單進行更改時,例如說“我的用戶頁面”和“注銷”,我該怎么做?

<div id="menu">
    <nav class="navbar">
        <div class="container">
            <ul class="nav navbar-nav">
                <li class="active"><a href="#"><span class="glyphicon glyphicon-home">  </span>    Home</a></li>
                <li><a href="#">Descuentos</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Categories<span class="caret"/></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">Cat A</a></li>
                        <li><a href="#" >Cat B</a></li>
                        <li><a href="#">Cat C</a></li>
                    </ul>
                </li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
                <li><a href="createaccount.php"><span class="glyphicon glyphicon-user"></span>Create account</a></li>
                <li class="dropdown">
                    <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" href="#"><span class="glyphicon glyphicon-log-in"></span>  Login</a>
                    <ul class="dropdown-menu" role="menu">
                        <li>
                            <form class="form-horizontal" role="form" action="tienda.php"  method="POST">
                                <div class="form-group">
                                    <label class="control-label col-md-4" for="nombre">User:</label>
                                    <div class="col-md-8">
                                        <input type="text" class="form-control" name="loginUser" required>
                                    </div>
                                    <label class="control-label col-md-4" for="nombre">Pass:</label>
                                    <div class="col-md-8">
                                        <input type="password" class="form-control" name="loginPass" required> <br>
                                    </div>
                                    <div class="col-md-5"></div>
                                    <button type="submit" class="btn btn-default col-md-5">Log In</button>
                                </div>
                            </form>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
    </nav>
</div>

基本上,改變

<ul class="nav navbar-nav navbar-right">
                    <li><a href="createaccount.php"><span class="glyphicon glyphicon-user"></span>Create account</a></li>
                    <li class="dropdown">
                        <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" href="#"><span class="glyphicon glyphicon-log-in"></span>  Login</a>
                        <ul class="dropdown-menu" role="menu">
                            <li>
                                <form class="form-horizontal" role="form" action="tienda.php"  method="POST">
                                    <div class="form-group">
                                        <label class="control-label col-md-4" for="nombre">User:</label>
                                        <div class="col-md-8">
                                            <input type="text" class="form-control" name="loginUser" required>
                                        </div>
                                        <label class="control-label col-md-4" for="nombre">Pass:</label>
                                        <div class="col-md-8">
                                            <input type="password" class="form-control" name="loginPass" required> <br>
                                        </div>
                                        <div class="col-md-5"></div>
                                        <button type="submit" class="btn btn-default col-md-5">Log In</button>
                                    </div>
                                </form>
                            </li>
                        </ul>
                    </li>
                </ul>

對此:

<ul class="nav navbar-nav navbar-right">
                    <li class="dropdown">
                    <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" href="#"><span class="glyphicon glyphicon-user"></span>Nombre USUARIO</a>

                    <ul class="dropdown-menu" role="menu">
                            <li><a href="#">Mi página</a></li>
                            <li><a href="#"><span class="glyphicon glyphicon-shopping-cart"></span>  Carrito</a></li>
                        </ul>
                    </li>


                    <li><a href="#"><span class="glyphicon glyphicon-log-out"></span>  Logout</a></li>

                </ul>

最好的方法是什么?

這是我通常的做法:

 <?php if($logged_id){ include 'menu_authenticated.php'; } else{ include 'menu_unauthenticated.php'; } ?> 

當然,這些文件將分別具有其菜單//menu_unauthenticated.php

 <ul class="nav navbar-nav navbar-right"> <li><a href="createaccount.php"><span class="glyphicon glyphicon-user"></span>Create account</a></li> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a> <ul class="dropdown-menu" role="menu"> <li> <form class="form-horizontal" role="form" action="tienda.php" method="POST"> <div class="form-group"> <label class="control-label col-md-4" for="nombre">User:</label> <div class="col-md-8"> <input type="text" class="form-control" name="loginUser" required> </div> <label class="control-label col-md-4" for="nombre">Pass:</label> <div class="col-md-8"> <input type="password" class="form-control" name="loginPass" required> <br> </div> <div class="col-md-5"></div> <button type="submit" class="btn btn-default col-md-5">Log In</button> </div> </form> </li> </ul> </li> </ul> 

//menu_authenticated.php

 <ul class="nav navbar-nav navbar-right"> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" href="#"><span class="glyphicon glyphicon-user"></span>Nombre USUARIO</a> <ul class="dropdown-menu" role="menu"> <li><a href="#">Mi página</a></li> <li><a href="#"><span class="glyphicon glyphicon-shopping-cart"></span> Carrito</a></li> </ul> </li> <li><a href="#"><span class="glyphicon glyphicon-log-out"></span> Logout</a></li> </ul> 

並不是說這是“方法”。 但這是一個選擇:)該選擇包括創建一些PHP函數。 一種輸出“已注銷”菜單,另一種輸出“已登錄”菜單。

然后,您只需擁有下面的代碼,而不必花很多精力:

<?php
if($loggedIn)
  renderLoggedInMeny();
else
  renderLoggedOutMeny();
?>

這些功能可能看起來像這樣:

function renderLoggedInMeny() {
  echo <<<EOT
<ul class="nav navbar-nav navbar-right">
  <li... [and so on]
EOT;
}

對於下面的代碼,我假設您有一個isLogged()函數,如果用戶已登錄,則該函數返回true;否則,返回false。 這是您可以在導航欄中執行的操作:

<?php if(isLogged()): ?>
<li><a href="profile.php">Profile</a></li>
<li><a href="logout.php">Logout</a></li>
<?php else: ?>
<li><a href="login.php">Login</a></li>
<li><a href="register.php">Register</a></li>
<?php endif; ?>

當然,PHP條件之間的代碼可以更改,您可以直接放置ul元素,而不是像我一樣僅放置li -僅用於演示目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM