Ankündigung

Einklappen
Keine Ankündigung bisher.

Variablenzuweisungen in config schreiben

Einklappen

Neue Werbung 2019

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

  • Variablenzuweisungen in config schreiben

    Hallo liebes php-Forum,

    ich habe eine Einstellungsseite für mein kleines Webinterface erstellt:

    PHP-Code:
    <div class="panel panel-default">
                    <div class="panel-heading"><span class='glyphicon glyphicon-wrench'></span> Einstellungen </div>
                    <div class="panel-body">
                        <p>Hier kannst du Einstellungen vornehmen.
                        Felder die nicht ge&auml;ndert werden sollen k&ouml;nnen einfach freigelassen werden.</p><br/>
                        
                            <form class="form-horizontal" target="" method="post" role="form">
                                <div class="form-group">
                                    <label for="dbhost" class="col-sm-2 control-label">Datenbankadresse (IP/Hostname)</label>
                                    <div class="col-sm-10">
                                        <input type="text" class="form-control" id="dbhost" placeholder="<? echo ($dbhost); ?>">
                                        <span class="help-block">Die IP oder Domain, unter der die MySQL-Datenbank erreichbar ist, gefolgt von Port getrennt durch einen Doppelpunkt</span>
                                    </div>
                                </div>
                                
                                <div class="form-group">
                                    <label for="dbname" class="col-sm-2 control-label">Datenbankname</label>
                                    <div class="col-sm-10">
                                        <input type="text" class="form-control" id="dbname" placeholder="<? echo($dbname); ?>">
                                        <span class="help-block">Der Name der Datenbank des Altis Life Servers</span>
                                    </div>
                                </div>
                                
                                <div class="form-group">
                                    <label for="dbuser" class="col-sm-2 control-label">Datenbanknutzer</label>
                                    <div class="col-sm-10">
                                        <input type="text" class="form-control" id="dbuser" placeholder="<? echo($dbuser); ?>">
                                        <span class="help-block">Der Benutzer der Datenbank </span>
                                    </div>
                                </div>
                                
                                <div class="form-group">
                                    <label for="dbpswd" class="col-sm-2 control-label">Datenbankpasswort</label>
                                    <div class="col-sm-10">
                                        <input type="password" class="form-control" id="dbpswd" placeholder="<? echo($dbpswd); ?>">
                                        <span class="help-block">Das Passwort des festgelegten Benutzers</span>
                                    </div>
                                </div>
                                
                                <div class="form-group">
                                    <label for="debug" class="col-sm-2 control-label">Debug-Modus</label>
                                    <div class="col-sm-10">
                                        <select class="form-control" id="debug">
                                            <option value="0">Deaktiviert</option>
                                            <option value="1">Aktiviert</option>
                                        </select>
                                        <span class="help-block">Aktiviert/Deaktiviert den Debug-Modus</span>
                                    </div>
                                </div>
                                
                                <div class="form-group">
                                    <label for="disable_login" class="col-sm-2 control-label">Login</label>
                                    <div class="col-sm-10">
                                        <select class="form-control" id="disable_login">
                                            <option value="0">Aktiviert</option>
                                            <option value="1">Deaktiviert</option>
                                        </select>
                                        <span class="help-block">Aktiviert/Deaktiviert den Login in Altis Life Control</span>
                                    </div>
                                </div>
                                
                                <div class="form-group">
                                    <label for="force_ssl" class="col-sm-2 control-label">SSL Erzwingen</label>
                                    <div class="col-sm-10">
                                        <select class="form-control" id="force_ssl">
                                            <option value="1">Deaktiviert</option>
                                            <option value="0">Aktiviert</option>                                        
                                        </select>
                                        <span class="help-block">Erzwingt den Benutzer SSL zu benutzen</span>
                                    </div>
                                </div>
                                
                                <div class="form-group">
                                    <label for="housing_mario" class="col-sm-2 control-label">Housing (von Mario)</label>
                                    <div class="col-sm-10">
                                        <select class="form-control" id="housing_mario">
                                            <option value="0">Aktiviert</option>
                                            <option value="1">Deaktiviert</option>                                                                                
                                            
                                        </select>
                                        <span class="help-block">Aktiviert/Deaktiviert das Housing-Plugin von Mario in Altis Life Control</span>
                                    </div>
                                </div>
                                
                                <div class="form-group">
                                    <div class="col-sm-offset-2 col-sm-10">
                                        <button type="submit" class="btn btn-success">Speichern</button>
                                    </div>
                                </div>
                            </form>  
                    </div>
                    </div>
                
                </div>
    Über diese Seite sollen die Einstellungen der config.php, die im Übergeordneten Verzeichnis liegt, angepasst werden.

    PHP-Code:
    <?php
    /////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////// MYSQL SETTINGS /////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////

    $dbhost "127.0.0.1:3306";        //Database IP or Domain
    $dbname "arma3life";              //Database Name
    $dbuser "arma";                   //Database User with writing rights
    $dbpswd "***";            //Database User Password


    /////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////// SETTINGS ////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////
    // 1=activate    0=deactivate
    $debug "0";                       //Enable Debug 
    $disable_login "0";               //Disable Login System
    $force_ssl "0";                    //Don't activate if you cant access ALC via SSL/HTTPS!!
    /////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////// Altis Life Mods ////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////
    $housing_mario "0";               //Activate Housing by Mario https://bitbucket.org/MarioZ2002/altis-life-housing/wiki/Home
    /////////////////////////////////////////////////////////////////////////////////////
    //////////////////// DONT CHANGE NOTHING IF YOU /////////////////////////////////////
    ////////////////////    DONT KNOW WHAT YOU DO   /////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////

    define('PROJECT_PATH'dirname(__FILE__));



    ?>
    Ist es möglich mit PHP die config.php zu beschreiben, bzw. aus der config.php so die Variablen auszulesen, dass in der Einstellungsseite in den Dropdowns, wo man die einzelnen Punkte aktiviern/deaktivieren kann, die Einstellungen korrekt angezeigt werden und auch abgeändert werden können? Ich habe mir dazu schon fopen angeguckt, bin aber nicht wirklich schlau draus geworden.

    Liebe Grüße

    Christian

  • #2
    Nimm für so etwas ein ini. Php bietet auch die Möglichkeit, dass direkt in ein Array einzulesen.
    [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


    • #3
      Andere Möglichkeit wäre einfach ein Config-Array. Das kannst du ganz einfach einlesen und mit file_put_contents() und export_var() ganz leicht wieder speichern. Außerdem hast du nicht 100 Variablen im globalen Namespace, so wie jetzt.

      Kommentar


      • #4
        Und inwiefern würde das mit der Ini aussehen?
        So in etwa?:

        Code:
        debug = on
        force_ssl = on
        Oder wie sähe das aus?

        Und das Config Array wäre das so etwas?:

        PHP-Code:
        class Config {
            
        debug     1,
            
        force_ssl 1,
            ;

        Kommentar


        • #5
          Ich sehe da kein "Config-Array", sondern eher eine "Config-Klasse", die vor Syntaxfehlern nur so strotzt...

          Eine Beispiels-Ini wird mit PHP mitgeliefert. Nennt sich php.ini
          [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


          • #6
            Zitat von chris579 Beitrag anzeigen
            Und das Config Array wäre das so etwas?:

            PHP-Code:
            class Config {
                
            debug     1,
                
            force_ssl 1,
                ;

            hm.. das ist eine klasse, ein array sieht so aus

            PHP-Code:
            //ab php 5.4(oder 5.5)
            [
            'debug'=>true,
            'force_ssl'=>true
            ]
            //sonst
            array(
            'debug'=>true,
            'force_ssl'=>true

            die config kannste ganz einfach generieren


            $config = "<?php \n return " . var_export($_POST, true) . ";";
            file_put_contents('config.php', $config );


            und die config verwenden
            PHP-Code:
            $config requre 'config.php';

            echo 
            $config['force_ssl']; 
            apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

            Kommentar


            • #7
              http://php.net/manual/de/function.parse-ini-file.php

              Damit die ini Files einlesen und fertig

              LG
              https://github.com/Ma27
              Javascript Logic is funny:
              [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

              Kommentar


              • #8
                ini files können ein sicherheitsrisiko darstellen, nicht jeder ist in der lage eine anwendung so zu erstellen, dass sich nichts im document root befindet, es kann dann passieren dass die ini datei sich auch im document root befindet und man wird auf diese von außen zugreifen und ausgeben können, php hingegen wird einfach interpretiert und es wird nichts angezeigt
                apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                Kommentar


                • #9
                  ini files können ein sicherheitsrisiko darstellen, nicht jeder ist in der lage eine anwendung so zu erstellen, dass sich nichts im document root befindet, es kann dann passieren dass die ini datei sich auch im document root befindet und man wird auf diese von außen zugreifen und ausgeben können, php hingegen wird einfach interpretiert und es wird nichts angezeigt
                  Ich nutze ja sowieso PHP für die Konfiguration, aber sonst sollte doch auch ne htaccess Datei mit "deny from all" reichen, oder?

                  LG
                  https://github.com/Ma27
                  Javascript Logic is funny:
                  [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

                  Kommentar


                  • #10
                    Zitat von Ma27 Beitrag anzeigen
                    Ich nutze ja sowieso PHP für die Konfiguration, aber sonst sollte doch auch ne htaccess Datei mit "deny from all" reichen, oder?

                    LG
                    nicht bei nginx aber sonst ja
                    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                    Kommentar


                    • #11
                      Das mit dem Sicherheitsrisiko hab ich jetzt schon geklärt, die config würde dann im Unterordner /config/config.ini liegen und eine .htaccess verbietet den Zugriff auf diesen Ordner bereits. Hätte vielleicht vorher erwähnen sollen, dass das ganze mit Apache läuft

                      Das mit der .ini werde ich mal versuchen, ich muss da in dieser Hinsicht sowieso alles mögliche umschreiben, was noch dauern kann

                      Kommentar


                      • #12
                        besser komplett außerhalb des document roots zu lassen, auch apache kann mal abstürzen oder sonst irgendwas.

                        https://github.com/Opentribes/Core/tree/develop/web das ist mein Document Root, wenn irgendwas auf dem server nicht läuft wie es soll, sieht man höchstens nur diese dateien
                        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                        Kommentar


                        • #13
                          Auch mit dieser Art config.php geht es sehr einfach.
                          http://www.php.de/php-einsteiger/109...onfig-php.html

                          Kommentar


                          • #14
                            Zitat von Kerstin83 Beitrag anzeigen
                            Auch mit dieser Art config.php geht es sehr einfach.
                            http://www.php.de/php-einsteiger/109...onfig-php.html
                            genau das habe ich vorhin gesagt, und ach einen weg gezeigt wie man einfach $_POST array in diese config.php exportiert, aber wozu einfach, wenn es auch schwer geht und ini files sind ja eh cooler
                            apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                            Kommentar


                            • #15
                              Zitat von BlackScorp Beitrag anzeigen
                              besser komplett außerhalb des document roots zu lassen, auch apache kann mal abstürzen ...
                              Und wie kann man den von extern die Datei aufrufen wenn Apache "abgestürzt" ist? Kannst Du mir das bitte mal erklären?
                              Neu bei PHP, lerne aktuell OOP

                              Kommentar

                              Lädt...
                              X