2017-05-22 12 views
0

これは以下のPHPファイル内の私のブートストラップnavbarです。私がしたいのは、navbarにアクティブなクラスを追加することです。私はこのコードでそれを達成することができた:PHP basename insideエコーはアクティブなクラスを追加しません

<li <?php if (basename($_SERVER['PHP_SELF']) == 'index.php') 
`echo 'class="active"' ?>><a href="index.php">Home </a></li> 

これは以下の通りです。できます。

<?php 

    if(logged_in()){ 

     echo 
     ' 
     <!--<li ><a href="admin.php">admin</a></li>--> 
     <li <?php if (basename($_SERVER['PHP_SELF']) == 'logout.php') echo 
     'class="active"' ?>><a href="logout.php">Logout</a></li> 
     <li><a href="admin.php">Games </a></li> 
     <li><a href="#">Contact</a></li> 
     '; 

    }else{ 
     echo '<li><a href="register.php">Login</a></li>'; 
    } 


    ?> 

コードも以下に見つけることができます:

はしかし、私はまた、ユーザーがログインしている場合はナビゲーションバー李さんをエコー機能を持っています。しかし、私は使用することはできません。

 <li <?php if (basename($_SERVER['PHP_SELF']) == 'logout.php') echo 
     'class="active"' ?>><a href="logout.php">Logout</a></li> 

を私がそれを使用するだけの方法:

<li <?php if (basename($_SERVER['PHP_SELF']) == 'index.php') echo 
'class="active"' ?>><a href="index.php">Home </a></li>. 

私はエラーを取得する:

Parse error: syntax error, unexpected 'PHP_SELF' (T_STRING), expecting ',' or ';' in C:\xampp\htdocs\together\includes\nav.php on line 35.

35行目は、問題のあるコードです:

<li <?php if (basename($_SERVER['PHP_SELF']) == 'index.php') echo 
'class="active"' ?>><a href="index.php">Home </a></li> 

私が削除したとき:php basenameを行から削除する上記のように、私は エラーを取得しませんが、私が最初に説明したようにアクティブクラス を追加するために実装したい技術です。

問題は:ログインした関数を呼び出すときに、どのようにアクティブなクラスを追加できますか?

<nav class="navbar navbar-inverse navbar-fixed-top"> 
<div class="container-fluid"> 
<!-- Brand and toggle get grouped for better mobile display --> 
<div class="navbar-header"> 
<button type="button" class="navbar-toggle collapsed" data- 
toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria- 
expanded="false"> 
    <span class="sr-only">Toggle navigation</span> 
    <span class="icon-bar"></span> 
    <span class="icon-bar"></span> 
    <span class="icon-bar"></span> 
    </button> 
    <a class="navbar-brand" href="index.php">Plutolingo</a> 
</div> 

<!-- Collect the nav links, forms, and other content for toggling --> 
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
    <ul class="nav navbar-nav"> 
    <li <?php if (basename($_SERVER['PHP_SELF']) == 'index.php') echo 
'class="active"' ?>><a href="index.php">Home </a></li> 
    <!--<li><a href="#">About</a></li>--> 
    <!--<li><a href="register.php">Login</a></li>--> 

    </ul> 

    <ul class="nav navbar-nav navbar-left"> 


    <?php 

    if(logged_in()){ 

     echo 
     ' 
     <!--<li ><a href="admin.php">admin</a></li>--> 
     <li <?php if (basename($_SERVER['PHP_SELF']) == 'logout.php') echo 
     'class="active"' ?>><a href="logout.php">Logout</a></li> 
     <li><a href="admin.php">Games </a></li> 
     <li><a href="#">Contact</a></li> 
     '; 

    }else{ 
     echo '<li><a href="register.php">Login</a></li>'; 
    } 


    ?> 
    </ul> 
</div><!-- /.navbar-collapse --> 

答えて

0

変更:

if(logged_in()){ 

    echo 
    ' 
    <!--<li ><a href="admin.php">admin</a></li>--> 
    <li <?php if (basename($_SERVER['PHP_SELF']) == 'logout.php') echo 'class="active"' ?>><a href="logout.php">Logout</a></li> 
    <li><a href="admin.php">Games </a></li> 
    <li><a href="#">Contact</a></li> 
    '; 

}else{ 

へ:

if(logged_in()) { ?> 
     <!--<li ><a href="admin.php">admin</a></li>--> 
     <li <?php if (basename($_SERVER['PHP_SELF']) == 'logout.php') echo 
     'class="active"' ?>><a href="logout.php">Logout</a></li> 
     <li><a href="admin.php">Games </a></li> 
     <li><a href="#">Contact</a></li> 
<?php }else{ 

以前は、エスケープしたこの文字列内の引用符を持っていました。どちらがエラーを生成した。

+0

答えていただきありがとうございます。エラーの原因、つまりエスケープされていない文字が見つかりました。私はあなたのソリューションと以下を試しました: '

  • >Login
  • 'あなたのバージョンと私の作品はエラーなく動作しますが、クラスは有効ではありません。 – Voytek

    0

    エンスタージュの貴重な提案で、私は私にはばかげて見える方法で欲しかったものを達成しましたが、うまくいきます。

    <nav class="navbar navbar-inverse navbar-fixed-top"> 
    <div class="container-fluid"> 
    <!-- Brand and toggle get grouped for better mobile display --> 
    <div class="navbar-header"> 
        <button type="button" class="navbar-toggle collapsed" data- 
    toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria- 
    expanded="false"> 
        <span class="sr-only">Toggle navigation</span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        </button> 
        <a class="navbar-brand" href="index.php">Pluto</a> 
    </div> 
    
    <!-- Collect the nav links, forms, and other content for toggling --> 
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
        <ul class="nav navbar-nav"> 
        <li <?php if (basename($_SERVER['PHP_SELF']) == 'index.php') echo 
    'class="active"' ?>><a href="index.php">Home </a></li> 
    
    
        <!--<li><a href="#">About</a></li>--> 
        <!--<li><a href="register.php">Login</a></li>--> 
        <?php 
        if(logged_in()){ 
        ?> 
        <!--<li ><a href="admin.php">admin</a></li>--> 
    
        <li <?php if (basename($_SERVER['PHP_SELF']) == 'logout.php') echo 
        'class="active"' ?>><a href="logout.php">Logout</a></li> 
        <li <?php if (basename($_SERVER['PHP_SELF']) == 'admin.php') echo 
        'class="active"' ?>><a href="admin.php">Games </a></li> 
        <li><a href="#">Contact</a></li> 
        <?php 
        }else{ 
        ?> 
        <li <?php if (basename($_SERVER['PHP_SELF']) == 'register.php') echo 
         'class="active"' ?>><a href="register.php">Login</a></li> 
        <?php 
        } 
        ?> 
    
        </ul> 
    
        <ul class="nav navbar-nav navbar-left"> 
    
        </ul> 
    </div><!-- /.navbar-collapse --> 
    </div><!-- /.container-fluid --> 
    </nav> 
    
    関連する問題