URL: https://www.overclockers.at/coding-stuff/config_datei_per_php_aendern_113483/page_1 - zur Vollversion wechseln!
Ich will meine config.php von einem script aus umschreiben können.
ich hab mal etwas code von hier geklaut: http://www.overclockers.at/showthre...light=php+query
Es funktioniert auch halbwegs, aber ich hab das Problem dass teilweise die Datei nachher verwurschtelt ist, zB sind die letzen paar zeilen doppelt oder ich hab auf einmal 2 ?> am ende.
Ich check nicht wo ich den Fehler hab...
glaub entweder passt eine abfrage und schleife irgendwie nicht oder das <? macht ihm zu schaffen.
Code: PHP<?php $target="$_SERVER[DOCUMENT_ROOT]/mm2/test"; //datei einlesen $datei = fopen("$target","r") or die("Error: Could not open file!"); $data = fread($datei, filesize("$target")); fclose($datei); $all = explode("\n",$data); //die zu ersetzenden sachen, getrennt nach Variablenname und Wert mit "" sofern nötig $var1 = array('$db_servername', '$mm_root', '$unauthorizedmessage', '$ftp_server'); $value1 = array('"FALSE"','"shit!!"','"FALSE"','"FALSE"'); function update($var,$value){ $ausgabe = ""; global $all; if(count($var) != count($value)){ die("FATAL ERROR"); } for($a=0; $a<count($all); $a++){ //foreach($all as $line) { $line = $all["$a"]; if (trim($line) == "") { //leerzeien continue; } if ($line[0]=="#" || ($line[0]=="/" && $line[1]=="/") || ($line[0]=="<" && $line[1]=="?") || ($line[0]=="?" && $line[1]==">") ) { // Kommentare usw $ausgabe = $ausgabe.$line."\n"; //werden übernommen continue; } $trimmed = trim($line); //alle sonderzeichen weg for($i=0; $i<count($var); $i++){ //ersetzen if( strstr($trimmed,"$var[$i]=") && $trimmed[strlen($trimmed)-1] == ";") { $newline = "$var[$i]=$value[$i];"; break; } else { $newline = $line; //sonst den ursprünglichen inhalt } } $ausgabe = $ausgabe.$newline."\n"; } return $ausgabe; //ausgabe als string } $ausgabe = update($var1,$value1); echo $ausgabe; //schreiben $datei = fopen("$target","r+") or die("Error: Could not open file!"); fwrite($datei,$ausgabe); fclose($datei); ?>
Code: PHP<? //--------------------------------------------Variablen für den Datenbankzugriff- $unauthorizedmessage="Das Passwort ist falsch."; $db_servername="localhost"; $db_username="root"; $db_password=""; $db_dbname="m"; //------------------------------------------------------------------------------- //-------------------------------------------------Variablen für das News-System- $enable_comments=false; //<---- Sollen Kommentare möglich sein $max_news_items=3; //<-- Anzahl der Nachrichten pro Seite //------------------------------------------------------------------------------- $mm_root="./../"; $ftp_server="guest"; $ftp_user_name="sitdown"; $ftp_user_pass="beaguest"; ?>
ich würde gleich die text-ersetzungen mittels regex verwenden:
file_{get|put}_contents geht erst ab php 4.3Code://die zu ersetzenden sachen, getrennt nach Variablenname und Wert mit "" sofern $var1 = array('$db_servername', '$mm_root', '$unauthorizedmessage', '$ftp_server'); $value1 = array('"FALSE"','"shit!!"','"FALSE"','"FALSE"'); // zum testen $filename="occonfig.test"; // regex zusammenstellen $r_var1=preg_replace('/^\$(.*)$/',"/^([ \t]*[$]\$1=)([^;]*);/im",$var1); $r_value1=preg_replace("/^(.*)$/","\\$1\$1;",$value1); $filecontent= implode("\n",file($filename)); // oder mit file_get_contents() lesen // regex alle aufeinmal anwenden $filecontent=preg_replace($r_var1,$r_value1,$filecontent); // file schreiben - zb mit: // file_put_contents($filename,$filecontent); // bzw zum testen anzeigen: echo "<PRE>"; echo htmlentities($filecontent);
hoi... thx!
muss ich gleich probieren...
was es da alles für funktionen gibt
Edit:
passt nicht ganz, kommt sowas raus:
"FALSE""FALSE";
"FALSE""FALSE";
$db_username="root";
$db_password="";
...
um die zeit pack ichs nimmer, schau ich mir morgen nochmal an.
anscheinend verschluckt die board-software doppelte \\ bei der verwendung von [php], habs auf [code] umgestellt, jetzt sollte es passen.
nimm am ende folgendes:
Code: PHPecho $ausgabe; //schreiben $datei = fopen("$target","w+") or die("Error: Could not open file!"); fwrite($datei,$ausgabe); fclose($datei);
Schein jetzt beides zu funktionieren
DANKE leute
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025