Config-Datei als Formular ausgeben

cryo

Mitglied
Hi !

Als erstes einmal -> gesucht habe ich schon aber leider vergebens.

Jeder kennt doch die Config-Datei bei einem PHP-Projekt?
Wie stelle ich es aber an dass, z.B.: im Adminbereich, diese Datei ausgelesen und als Formular dargestellt wird?
Wenn ich in diesem Formular dann Einträge geändert habe sollten diese neuen Einstellungen wieder in die Config-Datei reingeschrieben werden, genauso wie im Beispiel.

Beispiel: Config-Datei

// Site Background
$siteBg = '#f7f7f7';
// Site Background Image
$siteBgImage = '../optic/sitebgimage.gif';
// Site Title
$siteTitle = 'Bla';

Beispiel: Formular

<form action="configdateischreiben.php" method="post">
Site Background :
<input type="text" name="siteBg" value="#f7f7f7" /><br>
Site Background Image : <input type="text" name="siteBgImage" value="../optic/sitebgimage.gif" /><br>
Site Title : <input type="text" name="siteTitle" value="Bla" /><br>
<input type="submit" name="submit" value="Conf schreiben" /><br>
</form>

Die Kommentare in der Config-Datei sollten nach Möglichkeit genutzt werden zur Beschriftung der Formularfelder.

Ich hoffe jemand von Euch kann mir etwas weiterhelfen ?
Ich versuchs schon seit vorgestern und falle damit immer wieder auf die Schn... .

MfG Heiko
 
Na ja, du müsstest halt deine PHP-Datei parsen. Wenn du dich streng an die angegebenen Konventionen hältst (Datensatz: 1. Zeile Beschreibung, 2. Zeile Zuweisung usw.), sollte das kein Problem sein.

Da ich grad nichts zu tun hab, werd ich mal schnell ein Beispiel coden... stay tuned ;-)

// edit: Wie versprochen hier das Beispiel:

PHP:
<?
if (isset($_POST['submit'])) {
	$cfg = "<?\n";
	for ($i=0; $i<count($_POST['name']); $i++) {
		$name = $_POST['name'][$i];
		$value = $_POST[$name];
		$desc = $_POST['desc'][$i];
		$cfg .= "// ".$desc."\n";
		$cfg .= "\$".$name." = '".$value."';\n";
	}
	$cfg .= "?>";

	$fp = fopen("cfg.php", "w");
	fwrite($fp, $cfg);
	fclose($fp);
}
?>

<form action="editcfg.php" method="post">
<table>
<?
$data = file("cfg.php");

foreach ($data as $line) {
	$line = trim($line);
	if (preg_match("/^\\/\\/ (.*)/", $line, $match)) {
		echo "<tr><td><input type=\"hidden\" name=\"desc[]\" value=\"".$match[1]."\">".$match[1].":</td>";
	} elseif (preg_match("/^\\\\\$([A-Za-z0-9]+) = '(.*)';$/U", $line, $match)) {
		echo "<td><input type=\"hidden\" name=\"name[]\" value=\"".$match[1]."\"><input type=\"text\" name=\"".$match[1]."\" value=\"".stripslashes($match[2])."\"></td></tr>\n";
	}
}
?>
<tr><td colspan="2" align="center"><input type="submit" name="submit" value="Conf schreiben"></td></tr>
</table>
</form>

Die Config-Datei heißt hier "cfg.php", die Datei zum bearbeiten "editcfg.php".

Ist natürlich nicht perfekt, es kann noch zu Problemen bei bestimmten Spezialfällen kommen. Aber ich glaube, dass man damit schon mal was anfangen kann.

// edit2: Das Forum hat sich mal wieder ohne nachzufragen an meinen Slashes bedient :rolleyes:
 
Zuletzt bearbeitet:
Danke

Danke für die schnelle Antwort.
Ich werde mir mal mal Dein Beispiel-Script zu Gemüte ziehen und sehen was sich mit meiner Config-Datei so machen lässt.

Thanks Heiko
 
Zurück