INI-Parser, der PHP spricht?

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

  • INI-Parser, der PHP spricht?

    In einem Pluginsystem muß ich die Einstellungen der einzelnen Plugins in Dateien verwalten.

    Aus Sicherheits- und Performancegründen möchte ich die Einstellungsdateien nicht in einem Klartextformat wie etwa INI ablegen, sondern als PHP-Dateien.

    Diese PHP-Dateien muß ich aber frei via Skript verändern können, um grafische Einstellungsdialoge bieten zu können.

    Deshalb die Frage: Kennt jemand eine fertige Klasse, die Einstellungen ähnlich einer klassischen INI-Klasse lesen und schreiben kann, die Werte aber eben in nativem PHP ablegt UND in der Settings-Datei hinterlegte Kommentare und dergleichen in Ruhe läßt?

    Also statt im INI-Format wie z.B. so:

    Code:
    [databaseSettings]
    type=mySQL
    host=localhost
    port=3306
    user=meinuser
    ....
    eben z.B. so:

    Code:
    $settings["databaseSettings"]["type"] = "mySQL";
    $settings["databaseSettings"]["host"] = "localhost";
    $settings["databaseSettings"]["port"] = "3306";
    $settings["databaseSettings"]["user"] = "meinuser";
    Sowas selbst zu schreiben ist zwar kein Hexenwerk, hat aber ein paar fiese Fallstricke.

    Danke im Voraus für Tipps!

  • #2
    Am Anfang der ini-Datei:
    Code:
    ;<?php die( 'Finger weg von der INI!' ); ?>
    Und schon kann sie niemand mehr direkt aufrufen! (aber schon mit .php ablegen )

    Kommentar


    • #3
      Original geschrieben von PHP-Desaster
      Am Anfang der ini-Datei:
      Code:
      ;<?php die( 'Finger weg von der INI!' ); ?>
      Und schon kann sie niemand mehr direkt aufrufen! (aber schon mit .php ablegen )
      Das stimmt natürlich, und notfalls werd ichs auch so machen. Aber natives PHP wär natürlich schöner

      Kommentar


      • #4
        Geht es darum, dass die Files menschenlesbar bleiben? Du erlaubst also, dass jemand die Dateien frei manipuliert und dann inkludierst du sie einfach so? Damit kann man deiner Applikation beliebigen Code einimpfen!

        Benutze lieber ganz normale .ini Dateien, die außerhalb des DocRoot liegen oder durch .htaccess und o.g. Trick geschützt sind.
        Fürs Lesen von INI-Dateien gibt es parse_ini_file() und haufenweise Klassen wie Zend_Config_Ini.

        Um die Performance zu steigern, kannst du Konfiguration irgendwo cachen, etwa so:
        PHP-Code:
        $configfile '../config.ini';
        $cachefile 'cache/conf.php';
        if (
        filemtime($configfile) > filemtime($cachefile)) {
            
        $config parse_ini_file($configfileTRUE);
            
        file_put_contents($cachefile'<'.'?php $config = '.var_export($configTRUE).'; ?'.'>');
        } else {
            require_once 
        $cachefile;

        Zuletzt geändert von onemorenerd; 27.06.2008, 12:43.

        Kommentar


        • #5
          Hmmm das stimmt natürlich. Am Ende geht so viel Rechenzeit fürs Aussortieren "böser" Anweisungen drauf, daß der eventuelle Performancegewinn fürn Arsch ist... Dann bleibt wohl nichts anderes übrig als die gute alte .ini

          Kommentar

          Lädt...
          X