config datei bearbeiten

kirmandi

Mitglied
hallo,

also ich bin dabei ein cms zu machen nun habe ich so weiters alles fertig und will alles benutzerfreundlicher gestalten. dabei kahm mir der gedanke die config datei, in der alle wichtigeren einstellungen stehen, per kleinem formular bearbeiten zu können ...

meine config datei sieht in etwa so aus:
Code:
<?php
//MySQL Daten
$mysqlhost = "localhost";
$mysqldb = "";
$mysqluser = "";
$mysqlpw = "";

//Wieviele LastNews sollen angezeigt werden?
$lastnews = "5";
[...]
?>

wie kann ich es nun am besten lösen dies zu machen? die variablen auszulesen und auszugeben ist ja nicht das problem, da die config datei auf jeder seite eingebaut ist und so die variablen alle vorhanden sind. nur wie speicher ich das dann wieder so ? (am besten mit den kommentaren, falls jemand die config per hand mal editeiren will)

eine idee oder kleines codesnipplet mit den nötigen befehlen, wie ich das anstelle, würde mir schon reichen ;)

schonmal vielen dank

PS: viel ahnung von den file, fwrite befehlen usw habe ich nicht, da ich immer nur mit dbs gearbeitet habe, aber auch die befehle an sich geben mir nicht viel aufschluß dazu :(
 
Hallo,

wenn du einen Datensatz in ein DB "überschreiben" willst, dann geht das am besten mit dem Befehl UPDATE.
 
Ein guter Freund hat diese Klasse dazu geschrieben:
PHP:
<?php
/**
 * Funktionssammlung um aus einer Datei bestimmte Variablenwerte auszulesen,
 * oder neu zu setzen (PHP4)
 * @author Bubblez <bubblez@gmx.ch>
 * @create 14.7.2004
 * @version 0.4b
*/

$config = new value();

class value{

        var $fName;     //Dateiname
        
        /*
         * Setzt $wert auf die $variable/n in $mod
         * @return string $mod, String ohne Zeilenumbr&uuml;che, mit ersetzten Werten
         * @param string $mod, Text welcher durchsucht wird
         * @param array $variabel, Name der Variablen dessen Value ausgelesen wird
         * @param array $wert, Werte die neu f&uuml;r $variabel eingesetzt werden ($variabel="$wert";)
        */
        function setValueOfVar($mod,$variabel,$wert){
                $i=0;
                foreach ($variabel as $key=>$value){
                        $pattern = "/\\$($value)(\s*)=(\s*)(\"|')(.*)(\"|')/esiU";
                        $newString = $wert[$i++];
                        $replace = '"\\\$$1=\"$newString\""';
                        $mod = stripslashes(preg_replace($pattern,$replace,$mod))."\n";
                }
                //Letzten \n wegschneiden
                $mod = substr($mod,0,strlen($mod)-2);
                return $mod;
        }

        /*
         * Gibt den Wert von $variabel und den key von $variabel zur&uuml;ck
         * @return array array(array()), i.e. array( array(param,valueOfParam),[array() ...])
         * @param string $mod, Text welcher durchsucht wird
         * @param array $variabel, Name der Variablen dessen Value ausgelesen wird
        */
        function getValueOfVar($mod,$variabel){
                foreach ($variabel as $key=>$value){
                        $pattern = "/\\$($value)(\s*)=(\s*)(\"|')(.*)(\"|')/esiU";
                        preg_match($pattern,$mod,$treffer);
                        $values[]= array($treffer[1],$treffer[5]);
                }
                return $values;
        }

        /*
         * Schreibt $text in $fName
         * @return boolean
         * @param string $text, zu schreibender Text
         * @param string $fName, Dateiname
        */
        function writeValuesToFile($text,$fName_){
                 $fName_ = ($fName_=='')?$this->fName:$fName_;
                 $fd= fopen($fName_,"w+");
                 if ($fd)
                    fputs($fd,$text);
                    fclose($fd);
                    return true;
                 return false;
        }
}
?>


Die Anwendung ist Simpel, ich habe aber trotzdem noch 2 Funktionen für dich
PHP:
	function getFromConfig()
	{
		$config = new value();
		$config->fName = './conf.inc.php';
		$content = file_get_contents($config->fName);
		$settings = $config->getValueOfVar($content, array('dbHost', 'dbUser', 'dbPass', 'dbDatabase'));
		
		$frmHost = $settings[0][1];
		$frmUsername = $settings[1][1];
		$frmPasswort = $settings[2][1];
		$frmDatabase = $settings[3][1];
	}

	function WriteToConfig()
	{
	    $config = new value();
	    $config->fName = './conf.inc.php';
	    $felder = array('dbHost', 'dbUser', 'dbPass', 'dbDatabase');
	    $werte = array($_POST['frmHost'], $_POST['frmUsername'], $_POST['frmPasswort'], $_POST['frmDatabase']);
	    $content = file_get_contents($config->fName);
	    $neueconfig = $config->setValueOfVar($content, $felder, $werte);
	    $config->writeValuesToFile($neueconfig, $config->fName);
	}

Viel Spass mit der Klasse.

PHPbubu
 
@forsterm: die mysql db verbindungsdaten in einer datenbank zu speichern ist natürlich sehr clever ... und wenn man richitg liest dann seht man, dass ich bisher auch nur mit datenbanken gearbeitet habe

@PHPbubu: sieht sehr gut aus werde das mal testen, schonmal vielen dank dafür ;)
 
Zurück