#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?? + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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.. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#8 7. Mai 2012 AW: Array in config.php speichern Gut, danke nochmal für die Antwort. mfg atkz + Multi-Zitat Zitieren
#9 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. + Multi-Zitat Zitieren
#10 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. + Multi-Zitat Zitieren
#11 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.). + Multi-Zitat Zitieren
#12 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. + Multi-Zitat Zitieren
#13 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 + Multi-Zitat Zitieren