Ankündigung

Einklappen
Keine Ankündigung bisher.

Anpassen von Bootstrap mit PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anpassen von Bootstrap mit PHP

    Hi,
    möchte ein Control Panel erweitern. Dazu folgender Code der navigation.php
    PHP-Code:
    <div class="container-fluid">
        <div class="row">
        <div class="col-sm-3 col-md-2 sidebar">
            <ul class="nav nav-sidebar">
            <li <?php if ($currentPage=="acp_start.php") echo "class='active'"?>><a href="acp_start.php"><span class="glyphicon glyphicon-home"></span> Start</a></li>
            <li <?php if ($currentPage=="acp_news.php") echo "class='active'"?>><a href="acp_news.php"><span class="glyphicon glyphicon-inbox"></span> Beitr&auml;ge</a></li>
            <li <?php if ($currentPage=="acp_contents.php") echo "class='active'"?>><a href="acp_contents.php"><span class="glyphicon glyphicon-file"></span> Inhalte</a></li>
            <li <?php if ($currentPage=="acp_user.php") echo "class='active'"?>><a href="acp_user.php"><span class="glyphicon glyphicon-user"></span> Benutzer</a></li>
            <li <?php if ($currentPage=="acp_statistics.php") echo "class='active'"?>><a href="acp_statistics.php"><span class="glyphicon glyphicon-tasks"></span> Statistiken</a></li>
            <li <?php if ($currentPage=="acp_applications.php") echo "class='active'"?>><a href="acp_applications.php"><span class="glyphicon glyphicon-folder-open"></span> Bewerbungen</a></li>
            <li <?php if ($currentPage=="acp_support.php") echo "class='active'"?>><a href="acp_support.php"><span class="glyphicon glyphicon-comment"></span> Supportbereich <span class="label label-default"><?php $queryString "SELECT COUNT(*) AS count FROM support_tickets WHERE status != '2'"$queryHandle mysql_query$queryString ); $queryResult mysql_fetch_object$queryHandle ); $count $queryResult->count; echo $count?></span></a></li>
            <li <?php if ($currentPage=="acp_complaints.php") echo "class='active'"?>><a href="acp_complaints.php"><span class="glyphicon glyphicon-bullhorn"></span> Beschwerden <span class="label label-default"><?php $queryString "SELECT COUNT(*) AS count FROM complaints WHERE status != '2'"$queryHandle mysql_query$queryString ); $queryResult mysql_fetch_object$queryHandle ); $count $queryResult->count; echo $count?></span></a></li>
            </ul>
            <ul class="nav nav-sidebar">
            <li <?php if ($currentPage=="acp_dbconfig.php") echo "class='active'"?>><a href="acp_dbconfig.php"><span class="glyphicon glyphicon-cloud-upload"></span> Datenbank Konfiguration</a></li>
            <li <?php if ($currentPage=="acp_teamspeak.php") echo "class='active'"?>><a href="acp_teamspeak.php"><span class="glyphicon glyphicon-headphones"></span> TeamSpeak</a></li>
            <li <?php if ($currentPage=="acp_settings.php") echo "class='active'"?>><a href="acp_settings.php"><span class="glyphicon glyphicon-cog"></span> Einstellungen</a></li>
            </ul>
    </div>
    Es soll der Nutzerrang abgefragt werden, und dann soll die Navigtion dementsprechend erweitert werden.

    Abfrage:
    PHP-Code:
    <?php
        $query 
    mysql_query("SELECT $db_config_getadminrights FROM $db_config_accountslocation WHERE $db_config_getusername = '$username'");
        
    $value mysql_fetch_array($query);
        if(
    $value[$db_config_getadminrights]>=1)
        {                                                                  
            echo 
    "<li><a href='acp_start.php'><span class='glyphicon glyphicon-th-large'></span> Dashboard</a></li>";
        }
        
        
    ?>
    Nun: wie kann ich das einbauen, dass die Navigation nur z.b. "Supportbereich" anzeigt, wenn der Rang des Users =2 ist?

    Der oben genannte Code fragt ja nur ab, ob die verschiedenen Reiter der Navigation aktiv sind und dann auf die entsprechenden Seiten weiterleitet.

    Kann mir bitte jemand einen Tipp geben? Stehe auf dem Schlauch.

    //Edit: meine Versuche kann ich erst morgen hochladen.

    viele grüße
    Thomas

  • #2
    Zitat von makey19 Beitrag anzeigen
    Nun: wie kann ich das einbauen, dass die Navigation nur z.b. "Supportbereich" anzeigt, wenn der Rang des Users =2 ist?
    If?
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Zu mysql_query und dergleichen: http://php-de.github.io/jumpto/faq/#deprecated-mysql (derzeit letzter Eintrag)

      Du beachtest SQL-Injections? http://php-de.github.io/jumpto/faq/#sql-injection (derzeit drittletzter Eintrag)

      Ansonsten ist es nicht damit getan, das Menüelement auszublenden. Du musst im Code der entsprechenden Seite auch noch Abfragen einbauen, die das korrete Admin-Level sicherstellen.

      Kommentar


      • #4
        Zu aller erst möchte ich das Menüelement ausblenden. Dann würde ich den Rest in den entsprechenden Seiten machen.
        Dazu folgender Code:

        PHP-Code:
        <div class="container-fluid">
            <div class="row">
            <div class="col-sm-3 col-md-2 sidebar">
            
                <?php
            $query 
        mysql_query("SELECT $db_config_getadminrights FROM $db_config_accountslocation WHERE $db_config_getusername = '$username'");
            
        $value mysql_fetch_array($query);
            
                <
        ul class="nav nav-sidebar">
                <
        li <?php if ($currentPage=="acp_start.php") echo "class='active'"?>><a href="acp_start.php"><span class="glyphicon glyphicon-home"></span> Start</a></li>
                if($value[$db_config_getadminrights]>=5)
            {                                                                  
                <li <?php if ($currentPage=="acp_news.php") echo "class='active'"?>><a href="acp_news.php"><span class="glyphicon glyphicon-inbox"></span> Beitr&auml;ge</a></li>
            }
                if($value[$db_config_getadminrights]>=2000)
            {                                                                  
                 <li <?php if ($currentPage=="acp_contents.php") echo "class='active'"?>><a href="acp_contents.php"><span class="glyphicon glyphicon-file"></span> Inhalte</a></li>
            }
                if($value[$db_config_getadminrights]>=1338)
            {                                                                  
                <li <?php if ($currentPage=="acp_user.php") echo "class='active'"?>><a href="acp_user.php"><span class="glyphicon glyphicon-user"></span> Benutzer</a></li>
            }
                if($value[$db_config_getadminrights]>=1)
            {                                                                  
                <li <?php if ($currentPage=="acp_statistics.php") echo "class='active'"?>><a href="acp_statistics.php"><span class="glyphicon glyphicon-tasks"></span> Statistiken</a></li>
            }
                if($value[$db_config_getadminrights]>=2000)
            {                                                                  
                 <li <?php if ($currentPage=="acp_applications.php") echo "class='active'"?>><a href="acp_applications.php"><span class="glyphicon glyphicon-folder-open"></span> Bewerbungen</a></li>
            }
                if($value[$db_config_getadminrights]>=1)
            {                                                                  
                <li <?php if ($currentPage=="acp_support.php") echo "class='active'"?>><a href="acp_support.php"><span class="glyphicon glyphicon-comment"></span> Supportbereich <span class="label label-default"><?php $queryString "SELECT COUNT(*) AS count FROM support_tickets WHERE status != '2'"$queryHandle mysql_query$queryString ); $queryResult mysql_fetch_object$queryHandle ); $count $queryResult->count; echo $count?></span></a></li>
            }
                if($value[$db_config_getadminrights]>=4)
            {                                                                  
                <li <?php if ($currentPage=="acp_complaints.php") echo "class='active'"?>><a href="acp_complaints.php"><span class="glyphicon glyphicon-bullhorn"></span> Beschwerden <span class="label label-default"><?php $queryString "SELECT COUNT(*) AS count FROM complaints WHERE status != '2'"$queryHandle mysql_query$queryString ); $queryResult mysql_fetch_object$queryHandle ); $count $queryResult->count; echo $count?></span></a></li>
            }
                
                </ul>
                <ul class="nav nav-sidebar">
                if($value[$db_config_getadminrights]>=2000)
            {                                                                  
                 <li <?php if ($currentPage=="acp_dbconfig.php") echo "class='active'"?>><a href="acp_dbconfig.php"><span class="glyphicon glyphicon-cloud-upload"></span> Datenbank Konfiguration</a></li>
            }
            if($value[$db_config_getadminrights]>=2000)
            {                                                                  
                 <li <?php if ($currentPage=="acp_teamspeak.php") echo "class='active'"?>><a href="acp_teamspeak.php"><span class="glyphicon glyphicon-headphones"></span> TeamSpeak</a></li>
            }
            if($value[$db_config_getadminrights]>=2000)
            {                                                                  
                 <li <?php if ($currentPage=="acp_settings.php") echo "class='active'"?>><a href="acp_settings.php"><span class="glyphicon glyphicon-cog"></span> Einstellungen</a></li>
            }
                
                 </ul>
        </div>
        Jetzt wird jedoch nur eine leere Seite angezeigt.
        Könnt ihr mir bitte sagen, was ich falsch gemacht habe?

        @mermshaus:

        Kommentar


        • #5
          Deine Syntax ist unsinnig. Du öffnest mindestens an einer Stelle einen <?php-Bereich, ohne ihn vorher zu schließen. Viele deiner if-Abfragen stehen zudem in HTML-Bereichen. Die müssen auch in <?php…?> stehen, sonst führt PHP sie nicht aus.

          - http://php-de.github.io/jumpto/grundlagen-quellen/

          Kommentar


          • #6
            Danke mermshaus!
            hab soweit alles funktioniert. in den einzelnen Seiten sind jetzt auch Abfragen drin, die den Zugang verhindern.
            Könntest du dir bitte trotzdem noch diesen Code zwecks Sicherheit anschauen? Muss noch etwas getan werden?

            PHP-Code:
            <?php
            $currentPage
            ="acp_start.php";
            include(
            "functionlist.php");

            include(
            "config.php");
            session_start();
            error_reporting(0);

            if(isset(
            $_SESSION['username']))
            {
                
            $username $_SESSION['username'];
                
            $query mysql_query("SELECT * FROM $db_config_accountslocation WHERE $db_config_getusername = '$username'");
                
            $value mysql_fetch_array($query);
                if(
            $value[$db_config_getadminrights]<1)
                {
                    
            header('location: error.php?errorid=2.php');
                }
            }
            else 
            header('location: index.php');
            ?>
            +Rest der Seite.


            Vielen Dank!

            Kommentar


            • #7
              Du verwendest die veraltete mysql-Erweiterung und in deiner Query fehlt Escaping. (Siehe Beitrag #3.)

              mysql_fetch_array und SELECT * finde ich auch nicht ganz glücklich. Nimm was, das ein assoziatives Array liefert (*_fetch_assoc), und gib die Spalten, die du in der Query abrufen möchtest, explizit an.

              Weiß auch nicht, ob es so eine gute Idee ist, zumindest den Feldnamen ($db_config_getusername) dynamisch zu machen.

              Kommentar


              • #8
                Viele Dank an alle!
                Thema hat sich erledigt.

                Kommentar


                • #9
                  Ich würde dir empfehlen, eine Template-Engine wie Smarty oder Twig zu verwenden um deine Darstellungslogik von deinem "Code" (= Geschäftslogik) zu trennen. Das, was du hier produzierst, ist äussert unsauberer Code.
                  [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                  Kommentar

                  Lädt...
                  X