Hilfe beim Installationscript

anti43

nicht mehr wegzudenken
hallo mal wieder!

also ich will für mein tolles selbstgeschriebens programm ein installationsscript erstellen, welches die passenden variablen aus meiner config.inc.php einliest, und ein formular zum ändern dieser bereitstellt.
leider klappts bei mir nicht :(
ich habs mit fopen, file, explode hin und her was weiss ich versucht, aber ich bekomme meine variablen einfach nicht in ein anständiges array bzw wenn ich sie im array hab nicht in mein formular als values und namen.... :cry:

kann mir da einer helfen? ist sicher nur ein dreizeiler :D

und dann müssten die geänderten vars auch nochmal anständig in die datei zurück, also im format <? $var='huhu';?> :kiss *unverschämt bin*
aber das bekomme ich vielleicht ja noch hin :)
 
Auslesen sollte ja kein Problem sein, im Zweifelsfall ginge das sogar mit eval. Schreiben müsste man die Datei zeilenweise, wobei ich nicht weiß ob der Aufwand lohnt ein Konfigurationsskript, dass man ja manuell ausfüllen soll auszulesen, online zu editieren und wieder zu speichern.
Dann kannst du gleich alles im Skript abfragen und die Werte beispielsweise mit serialize in einen String umwandeln und eben diesen in eine Textdatei speichern.
 
ja, das es kein problem sein SOLLTE is mir klar. aber irgedwo hängts bei mir.
ich dachte halt sowas wie

PHP:
$array = file('config.inc.php','r+');

$Variablen=explode("=",$array);
foreach($Variablen as $key => $value){
$key_x = str_replace("$", "", $key);


echo <<< ladida
        <tr>
            <td width="70">
                <p><font  face="Arial">$value:</font></p>
            </td>
            <td width="288">
                <p><input name="$key_x" value="$key" size="20" maxlength="40"></p>
            </td>
        </tr>
ladida;
}

aber irgendwie klappts nicht.je nach verwendeter einlesefunktion in diesem blöden array stehen dann sachen wie "array" oder der key is die ganze zeile und so. ich muss auch zugeben ich bin noch nicht so array-fit...

welche funktion macht den zeilenweise lesen, und wie mach ich das mit dem explode, das geht irgedwie garnicht.
 
Was ich immer noch nicht verstehe ist, warum du die Datei nicht einfach mit include einbindest, ich denke das wird eh später mit ihr gemacht.
 
*hmpf* guter plan. manchmal sieht man den baum vor lauter ästen nicht...
ok, das ist geschafft. und dann mit implode[] wieder zurück in die datei?
leider geht implode[$_post] nicht, habs ausprobiert :(
 
Da die Struktur bekannt und immer die Gleiche ist kannst du die Zeilen mit z.b. fwrite($handle, '$passwort='.$passwort.";\n") schreiben.
 
ok das leuchtet ein. kann ich ein $_post dings schleifenweise auslesen? wenn, wie ? :kiss
 
Theoretisch könntest du ein array_walk durchführen.
Sicherheitstechnisch sinnvoller wäre es aber denke ich die Array-Indizes der Formulardaten fest vorzubelegen.
Also z.B.
PHP:
$daten = array ("name", "passwort", "server", "db");
for ($schleifenzaehler=0; $schleifenzaehler<4; $schleifenzaehler++) {
    machirgendwas_mit_dem_Post-Dings($_POST[$daten[$schleifenzaehler]]);
}
 
also die indizes wären dann die input namen vom formular, hab ich das richtig verstanden? und danke für die hilfe!
 
also so gehts, nur den zeilenumbruch nach dem schreiben einer variable bekomm ich nicht hin...

PHP:
if ($schreiben =='ja') {
$i=0;
$handle = fopen('config.inc.php','r+');
$daten = array ("version", "FTPServer", "FTPUser", "FTPPasswort","db_user", "dbpasswd", "datenbank_name", "global_path");
for ($p=0; $p<4; $p++) {
    fwrite($handle,'<?$'.$daten[$i].'="'.$_POST[$daten[$p]].'";?>');
    $i++;
}
 
Wenn du folgende Zeile wie im Beispiel abänderst sollte es einen Zeilenumbruch ergeben:
PHP:
fwrite($handle,'<?$'.$daten[$i].'="'.$_POST[$daten[$p]]."\";?>\n");
 
hhmm er schreibt das \n aus, oder wird das beim include dann zu ner neuen zeile? oder kann ich die vars durch kommas getrennt in einer zeile leaassen?

<?$version="";?>\n<?$FTPServer="www.server.de";?>\n<?$FTPUser="username";?>\n<?$FTPPasswort="passwd";?>\n
 
Hast du das \n wie im Beispiel in doppelten Anführungsstrichen oder in einfachen - dann funktioniert es nämlich nicht.
 
Oben