[PHP] Array in config.php speichern

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Atkaz, 28. April 2012 .

  1. 28. April 2012
    Array in config.php speichern

    Hallo Leute,

    ich bin im Moment ein eigenes CMS zu erstellen, nun habe ich das Problem, dass ich für jedes Modul Config.php anlegen will, wo die entsprechenden Config-Optionen speichern möchte. Soweit ganz gut.

    Nun habe ich das Problem, dass ich diese auch in CMS verändern will. Das heißt wenn eine Option deaktiviert werden soll, so soll z.B. mittels einer CheckBox die Möglichkeit bestehen diese zu deaktivieren .

    Nun Stellt sich das Problem wie ich die ganzen Sachen wieder in die Config.php übertragen soll. Die Struktur der Config.php sieht bischen wie folgt aus:

    PHP:
    $config [ "name" ]=>array(
                      
    "option" => value ,
                      
    "option" => value                 

    )
    Wie bekomme ich nun am besten hin, dass die Werte in der Config.php durch die neuen überschrieben werden??
     
  2. 28. April 2012
    AW: Array in config.php speichern

    PHP: serialize - Manual
    PHP: unserialize - Manual

    oder wenn es "einfache*" werte sind (ein klein bisschen langsamer, aber dafür lesbar)
    PHP: json_encode - Manual
    PHP: json_decode - Manual

    * `true`, `false`, `null`, nummern oder strings
     
  3. 28. April 2012
    AW: Array in config.php speichern

    hmm..ja ich wollte auf auf dieser Form der Darstellung (serialize etc.) verzichten. Es sollte halt auch einfach sein, neue Configs hinzuzufügen. Das heißt wenn eine neune Option hinzugefügt werden soll, so kann diese mittels:
    PHP:
    $config [ "neu_option" ]=array(
                          
    "option" => value
    )

    erfolgen. Ich meine ich könnte es auch so machen, dass dies im CMS selbst erstellt werden könnte, dann aber auch mittels serialize etc. aber ich wollte mich halt erkundigen, ob vielleicht doch ne Möglichkeit besteht das Array in ihrer Ursprungsform in der Datei zu überschreiben bzw. zu speichern.
     
  4. 28. April 2012
    Zuletzt bearbeitet: 29. April 2012
    AW: Array in config.php speichern

    nein gibt es nicht. wenn du einen php-array haben willst musst du das selbst erledigen (was auch möglich ist, wenn man weiß wie).

    PHP:
    <? php

    $config 
    = [ 
      
    'foo'   => [  'bar'  =>  'baz'  ], 
      
    'test'  =>  true
      
    'gna'   =>  false ,
      
    33 null 47.5 ,
    ];

    function 
    to_src ( $inp ) {
      if (
    is_array ( $inp )) {
        
    $src  'array' ;
        foreach (
    $inp  as  $k  =>  $v )
          
    $src  .=  to_src  ...
        ...
      }

      if (
    is_string ( $inp )) ...
      if (
    is_numeric ( $inp )) ...
      if (
    is_bool ( $inp )) ...
      if (
    is_null ( $inp )) ...
      throw new 
    InvalidArgumentException ;
    }

    print 
    '$config = '  to_src ( $config ) .  ';' ;
    zum bleistift.
     
  5. 28. April 2012
    AW: Array in config.php speichern

    super danke...gleich disko..dann wird die ganze sache erstmal so umgesetzte...oder auch in der db gespeichert..
     
  6. 2. Mai 2012
    AW: Array in config.php speichern

    @murdoc..was meinst du wäre es besser das ganze in der db zu speichern oder so wie ich es vorgehabt hatte??

    mfg
    atkaz
     
  7. 2. Mai 2012
    AW: Array in config.php speichern

    server-relevante sachen auf dem server oder datenbank, globale sachen in ner datenbank.

    ist von vorteil wenn du deine app auf verschiedene server verteilst (oder mal verteilen willst) und nen load-balancer vor schaltest.

    dann kannst du deine konfiguration bequem in einer datenbank verwalten und nicht auf jedem server einzeln.
     
  8. 7. Mai 2012
    Zuletzt bearbeitet: 7. Mai 2012
    AW: Array in config.php speichern

    Ja, geht: PHP: var_export - Manual

    Code:
    $code = '$config = ' . var_export($myArray, true) . ';';
    
    bzw. du könntest es auch so aufbauen, wie du oben angedeutet hast:

    Code:
    $code = '';
    foreach ($myArray as $key => $val)
     $code .= '$config[' . var_export($key, true) . '] = ' . var_export($val, true) . ";\n";
    
     
    1 Person gefällt das.
  9. 7. Mai 2012
    AW: Array in config.php speichern

    Um den Kram dann aber wieder zu importieren musste mit eval() arbeiten, was ich eher vermeiden würde..
    Klar solange du da keine vom Anwender eingegebenen Variablen speicherst, kann das sicher sein..

    Nichts desto trotz würde ich eher serialize() und unsearialize() bzw. json_decode() und json_encode() nutzen... (wie ja schon gepostet wurde)

    MfG
     
    1 Person gefällt das.
  10. 8. Mai 2012
    Zuletzt bearbeitet: 8. Mai 2012
    AW: Array in config.php speichern

    Ne, einfach nur '<?php' drum herum und mit include() bzw require() arbeiten. Ist sogar performaner, wie die bereits erwähnten Varianten, sofern man Opcode-Cacher wie APC installiert hat, der solche php-files zwischen speichert.
    Sicherer ist es auch, da php source nicht an Browser gesendet wird. Bei den anderen Verfahren musste entweder durch die webserver config die Dateien vom Zugriff einschränken oder nicht erratbare Namen wählen.


    Versteh' ich nicht. var_export() erstellt doch die equivalente Darstellung der Daten. Was soll daran unsicher sein? Ist ja nicht, so dass die Config mit
    Code:
    $config .= '$configVarOne = "' . $_GET['configVarOne'] . '"';
    erstellt wird, bei der man ausbrechen könnte, seis mit'm null byte oder vorzeitigem "-Zeichen. Daher dürfte var_export() mindestens genauso sicher sein, wie die bereits empfohlenen Varianten.

    Auch wenn ich eher der Freund von JSON-files bin für so etwas, so ist dieser Weg mindestens genauso elegant/sicher/schnell (Wobei letzteres s.o.).
     
  11. 8. Mai 2012
    AW: Array in config.php speichern

    Ich werf mal ein paar Informationen rein:

    SQL Lite Datenbank
    PHP: SQLite3 - Manual
    PHP: SQLite - Manual

    Zugriff auf Ordner verhindern, womit du dann auch XML Dateien o.Ä. benutzen kannst
    SELFHTML: Webserver/CGI / Webserver / .htaccess - Server-Reaktionen kontrollieren

    Ich würde dir empfehlen, dass du sowieso nur eine index.php (meist Bootstrap genannt), die CSS und Bilddateien im erreichbaren Bereich des Webservers hast. Alles andere ist in einem Ordner, der von außen nicht erreichbar ist.

    Grundsätzlich wird es aber sicher keine schlechte Idee sein, dass du eine PHP Datei erstellst, da du diese sicher nicht oft änderst und der Code so schnell ausgeführt werden kann.
     
    1 Person gefällt das.
  12. 13. Mai 2012
    AW: Array in config.php speichern

    Danke Leute für die guten Beiträge.

    Ich werde wahrscheinlich wie aufgeführt, auf die var_export-Variante zurückgreifen.


    mfg
    Atkaz
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.