$POST array in Datei schreiben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • $POST array in Datei schreiben

    Hallo zusammen,

    Heute versuch ich mich an einer Sache die mir nicht so ganz einleuchten mag.

    Ich lese eine Datei Zeilenweise ein, trenne sie an einer bestimmten Stelle um die Werte mit eine einigen Inputfeldern zu bearbeiten. Soweit weit so gut.

    Nun sollen diese neuen Werte natürlich auch wieder zurück in die Datei.
    Ab hier gibt es Probleme. Den funktionierenden $_POST bekomm ich hin, aber nicht mehr das Schreiben in die Datei

    Hier meine Testdatei im Überblick
    PHP-Code:
    <?php

    // $_POST und Datei schreiben
    if (isset($_POST['eintragen'])) {
        
    // Maskierende Slashes aus POST entfernen
        
    $_POST get_magic_quotes_gpc() ? array_map('stripslashes',$_POST) : $_POST;

        
    // Inhalte der Felder aus POST holen
        
    $language $_POST['language'];
        
    $adapter $_POST['adapter'];
        
    $performance $_POST['3D_Performance'];
        
    $resolution_W $_POST['Resolution_W'];
        
    $resolution_H $_POST['Resolution_H'];
        
    $resolution_Bpp $_POST['Resolution_Bpp'];
        
    $windowed $_POST['Windowed'];

        
    // Testausgabe
        
    print "<pre>";
        
    print_r($_POST);
        print 
    "</pre>";

        
    // ... wie bekomm ich jetzt das array wieder in die Datei geschrieben?
    }

    // Datei einlesen
    $file file('arma2_co.cfg');
    foreach(
    $file as $line) {            // Schleife läuft so lang bis alle Zeilen durch sind
        
    $row explode("="$line);      // Zerteilung der Zeilen
        
    $key trim($row[0]);            // Leerzeichen am Anfang und Ende Löschen
        
    $val trim($row[1]);            // Leerzeichen am Anfang und Ende Löschen

        // Test - Zeichen "; entfernen
        
    $test = array("\""";");
        
    $raffel[$key] = str_replace($test,"",$val);

        
    // Testausgabe
        
    print "<pre>";
        
    print_r($raffel);
        print 
    "</pre>";
    }

    ?>
    <form name="mu" action="" method="post" enctype="text/html">
    <input type="text" name="language" value="<?php echo $raffel['language']; ?>" size="20" maxlength="50" /> <br />
    <input type="text" name="adapter" value="<?php echo $raffel['adapter']; ?>" size="20" maxlength="50" /> <br />
    <input type="text" name="3D_Performance" value="<?php echo $raffel['3D_Performance']; ?>" size="20" maxlength="50" /> <br />
    <input type="text" name="Resolution_W" value="<?php echo $raffel['Resolution_W']; ?>" size="20" maxlength="50" /> <br />
    <input type="text" name="Resolution_H" value="<?php echo $raffel['Resolution_H']; ?>" size="20" maxlength="50" /> <br />
    <input type="text" name="Resolution_Bpp" value="<?php echo $raffel['Resolution_Bpp']; ?>" size="20" maxlength="50" /> <br />
    <input type="text" name="Windowed" value="<?php echo $raffel['Windowed']; ?>" size="20" maxlength="50" /> <br />
    <input type="submit" name="eintragen" id="eintragen" value="Abschicken" />
    </form>
    Kann mir dabei mal jemand weiter helfen?
    Ich such und lese seit Stunden im Netz, aber entweder finde ich nichts vergleichbares oder ich versteh es einfach nicht

  • #2
    Ich weiß nicht, wo das Problem liegt? Du hast die einzelnen POST-Werte. Daraus baust du dir per Zeichenkettenverknüpfung einen String und den haust du per file_put_contents in eine Datei. Also vom Prinzip her so:
    PHP-Code:
    $bla   $_POST['bla'];
    $blubb $_POST['blubb'];
    $str   'bla='.$bla."\n";
    $str  .= 'blubb='.$blubb."\n";
    file_put_contents ('dateiname'$str
    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Aus meiner Wühlkiste mal eine "configurator.php":
      (Vorsicht: Es wird automaltisch eine config_auto.php erstellt)

      PHP-Code:
      <?php
      //konfigurator.php
      error_reporting(-1);
      ini_set('display_errors'TRUE);

      function 
      array2phpfile(Array $array$filename)
      {
        
      $content  "<\x3fphp \n";
        
      $content .= "return   \n";
        
      $content .= var_export($array,TRUE)."; \n";
        
      file_put_contents($filename,$content);
      }

      function 
      file2array($filename)
      {
       return include 
      $filename;
      }

      // Testcode
      $configdatei   "./config_auto.php"// Die Datei, wo es dann drin ist
      $configuration = array();


      if(empty(
      $_POST['action']))
      {
        if(
      file_exists($configdatei))
            
      $configuration file2array($configdatei);
      }else
      {
        if(!empty(
      $_POST['config']))
            
      $configuration $_POST['config'];
        if(!empty(
      $_POST['key']))
            
      $configuration[$_POST['key']]=$_POST['value'];
        
      array2phpfile($configuration,$configdatei);
      }




      ?>

      <form action="" method="post">
      <input type="hidden" name="action" value="saveconfig">
      <table>
       <tr>
        <th>Key</th>
        <th>Value</th>
       </tr>
      <?php
      foreach($configuration as $key => $value)
      {
        echo 
      '<tr><td>';
        echo  
      htmlentities($key).'</td><td>'.
              
      '<input type="text"
                      name="config['
      .htmlentities($key).']"
                      value="'
      .htmlentities($value).'"
               >
               <br /> '
      ;
        echo 
      '</td></tr>';
      }
      ?>
       <tr>
        <td><input type="text" name="key" value=""></td>
        <td><input type="text" name="value" value=""></td>
       </tr>

       <tr>
        <td>&nbsp;</td>
        <td><input type="submit"  value="Speichern"></td>
       </tr>
      </table>
      </form>

      <pre>
        <?php 
          
      // print_r($configuration) 
        
      ?>
      </pre>
      Wir werden alle sterben

      Kommentar


      • #4
        Ich sage dir wo das Problem liegt.
        Mir raucht schon mittelschwer der Kopf vor lauter Schleifen, String(tanga)`s, und Array`s.

        Im Ernst, ich arbeite noch nicht so lange mit PHP und versuch es zu verstehen, aber ab und an überfordert das noch leicht. Dann scheitert das wohl schon an so einer grundlegenden Sache wie die hier oben genannten.

        Hätte mit dem Zeugs doch in jungen Jahren anfangen sollen

        ps. eine tolle Seite hast du da Peter! Einen halben Tag eingelesen und ich musste mir Bier kaltstellen

        Kommentar


        • #5
          Zitat von cxxl Beitrag anzeigen
          ps. eine tolle Seite hast du da Peter! Einen halben Tag eingelesen und ich musste mir Bier kaltstellen
          Mach weiter, dann lernst du es auch. Und Bier ist immer eine gute Idee.

          Peter

          PS: Vermeide den Deppen-Apostroph
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Sooo es lüppt..
            Danke euch beiden für die Hilfe/Anregung.

            Abschließend noch eine Frage zu dem Array, die ich noch nicht ganz verstehe.

            PHP-Code:
            $file file('arma2_co.cfg');
            foreach(
            $file as $line) {            // Schleife läuft so lang bis alle Zeilen durch sind
                
            $row explode("="$line);      // Zerteilen
                
            $key trim($row[0]);            // Leerzeichen am Anfang und Ende Löschen
                
            $val trim($row[1]);            // Leerzeichen am Anfang und Ende Löschen

                
            $test = array("\""";");
                
            $raffel[$key] = str_replace($test,"",$val);

                
            // Debug
                
            print "<pre>";
                
            print_r($raffel);
                print 
            "</pre>"
            Normal schaut das gesamte Array ja so aus:

            Array (
            [language] => German
            [adapter] => -1
            [3D_Performance] => 1
            [Resolution_W] => 800
            [Resolution_H] => 600
            [Resolution_Bpp] => 32
            [Windowed] => 0
            [MinBandwidth] => 320000
            [MaxBandwidth] => 2147483647
            [MaxMsgSend] => 256
            [MaxSizeGuaranteed] => 1024
            [MaxSizeNonguaranteed] => 64
            [MinErrorToSend] => 0.0049999999
            [MaxCustomFileSize] => 1600000
            )


            Ein print_r gibt mir folgendes:

            Array (
            [language] => German
            )

            Array (
            [language] => German
            [adapter] => -1
            )

            Array (
            [language] => German
            [adapter] => -1
            [3D_Performance] => 1
            )

            usw usw

            Hab ich da einen Fehler in meiner foreach-Schleife oder ist das so korrekt ?
            Funktionell geht das alles (freu) aber besser ich frag mal nach.

            Kommentar


            • #7
              Zitat von cxxl Beitrag anzeigen
              Hab ich da einen Fehler in meiner foreach-Schleife oder ist das so korrekt ?
              Das Verhalten ist völlig korrekt, da du das Array in der Schleife peu à peu aufbaust. Setzt das print_r mal hinter das foreach.

              Peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                So schnell ist der Ofen aus Mr.Orman...

                Was so eine kleine Klammer doch aus macht.
                Jetzt raff ich das.

                Danke dir Keule

                Kommentar


                • #9
                  Zitat von cxxl Beitrag anzeigen
                  Was so eine kleine Klammer doch aus macht.
                  Dann war das tatsächlich der Originalcode? Ich dachte nur, du hättest den nicht komplett gepostet.

                  Peter

                  PS: Wer ist Mr. Orman? Und sag nicht Keule. Das war früher die Bezeichung für eine Freundin!
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Jepp, möchte das nachher in meine Case-Struktur einbauen (Formular in die content.php und die Anweisungen zum Inhalt schreiben in die process.php)
                    Das hier brauch ich bisweilen nur um das ganzen Wust zu verstehen und zu lernen wie was wo warum.

                    Hier die ganze Datei die nun eine zweite config.cfg bearbeitet

                    PHP-Code:
                    <?php

                    if (isset($_POST['eintragen'])) {
                        
                    // Maskierende Slashes aus POST entfernen
                        
                    $_POST get_magic_quotes_gpc() ? array_map('stripslashes'$_POST) : $_POST;

                        
                    // Inhalte der Felder aus POST holen
                        // Config
                        
                    $host $_POST['hostname'];
                        
                    $pwd $_POST['password'];
                        
                    $pwda $_POST['passwordAdmin'];
                        
                    $rip $_POST['reportingIP'];
                        
                    $log $_POST['logFile'];
                        
                    $motd $_POST['motd[]'];
                        
                    $mi $_POST['motdInterval'];
                        
                    $mp $_POST['maxPlayers'];
                        
                    $kd $_POST['kickDuplicate'];
                        
                    $vs $_POST['verifySignatures'];
                        
                    $vmp $_POST['voteMissionPlayers'];
                        
                    $vt $_POST['voteThreshold'];
                        
                    $dv $_POST['disableVoN'];
                        
                    $vcq $_POST['vonCodecQuality'];
                        
                    $pers $_POST['persistent'];
                        
                    $ouc $_POST['onUserConnected'];
                        
                    $oud $_POST['onUserDisconnected'];
                        
                    $did $_POST['doubleIdDetected'];
                        
                    $rc $_POST['regularCheck'];
                        
                    $oudata $_POST['onUnsignedData'];
                        
                    $ohdata $_POST['onHackedData'];
                        
                    $oddata $_POST['onDifferentData'];
                        
                    $be $_POST['BattlEye'];

                        
                    // Debug
                        
                    print "<pre>";
                        
                    print_r($_POST);
                        print 
                    "</pre>";

                        
                    $str  'hostname=' ."\"" .$host"\";\n";
                        
                    $str .= 'password=' ."\"" .$pwd"\";\n";
                        
                    $str .= 'passwordAdmin=' ."\"" .$pwda"\";\n";
                        
                    $str .= 'reportingIP=' ."\"" .$rip"\";\n";
                        
                    $str .= 'logFile=' ."\"" .$log"\";\n";
                        
                    $str .= 'motd[]=' ."\"" .$motd"\";\n";
                        
                    $str .= 'motdInterval=' .$mi";\n";
                        
                    $str .= 'maxPlayers=' .$mp";\n";
                        
                    $str .= 'kickDuplicate=' .$kd";\n";
                        
                    $str .= 'verifySignatures=' .$vs";\n";
                        
                    $str .= 'voteMissionPlayers=' .$vmp";\n";
                        
                    $str .= 'voteThreshold=' .$vt";\n";
                        
                    $str .= 'disableVoN=' .$dv";\n";
                        
                    $str .= 'vonCodecQuality=' .$vcq";\n";
                        
                    $str .= 'persistent=' .$pers";\n";
                        
                    $str .= 'onUserConnected=' ."\"" .$ouc"\";\n";
                        
                    $str .= 'onUserDisconnected=' ."\"" .$oud"\";\n";
                        
                    $str .= 'doubleIdDetected=' ."\"" .$did"\";\n";
                        
                    $str .= 'regularCheck=' ."\"" .$rc"\";\n";
                        
                    $str .= 'onUnsignedData=' ."\"" .$oudata"\";\n";
                        
                    $str .= 'onHackedData=' ."\"" .$ohdata"\";\n";
                        
                    $str .= 'onDifferentData=' ."\"" .$oddata"\";\n";
                        
                    $str .= 'BattlEye=' .$be";\n";

                        
                    file_put_contents('server_co.cfg'$str);
                    }

                    $file file('server_co.cfg');
                    foreach(
                    $file as $line) {            // Schleife läuft so lang bis alle Zeilen durch sind
                        
                    $row explode("="$line);      // Zerteilen
                        
                    $key trim($row[0]);            // Leerzeichen am Anfang und Ende Löschen
                        
                    $val trim($row[1]);            // Leerzeichen am Anfang und Ende Löschen

                        
                    $test = array("\""";");
                        
                    $raffel[$key] = str_replace($test,"",$val);

                        
                    // Debug

                    }
                        print 
                    "<pre>";
                        
                    print_r($raffel);
                        print 
                    "</pre>";
                    ?>
                    <form name="mu" action="" method="post" enctype="text/html">

                    <input type="text" name="hostname" value="<?php echo $raffel['hostname']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="password" value="<?php echo $raffel['password']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="passwordAdmin" value="<?php echo $raffel['passwordAdmin']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="reportingIP" value="<?php echo $raffel['reportingIP']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="logFile" value="<?php echo $raffel['logFile']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="motd[]" value="<?php echo $raffel['motd[]']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="motdInterval" value="<?php echo $raffel['motdInterval']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="maxPlayers" value="<?php echo $raffel['maxPlayers']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="kickDuplicate" value="<?php echo $raffel['kickDuplicate']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="verifySignatures" value="<?php echo $raffel['verifySignatures']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="voteMissionPlayers" value="<?php echo $raffel['voteMissionPlayers']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="voteThreshold" value="<?php echo $raffel['voteThreshold']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="disableVoN" value="<?php echo $raffel['disableVoN']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="vonCodecQuality" value="<?php echo $raffel['vonCodecQuality']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="persistent" value="<?php echo $raffel['persistent']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="onUserConnected" value="<?php echo $raffel['onUserConnected']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="onUserDisconnected" value="<?php echo $raffel['onUserDisconnected']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="doubleIdDetected" value="<?php echo $raffel['doubleIdDetected']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="regularCheck" value="<?php echo $raffel['regularCheck']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="onUnsignedData" value="<?php echo $raffel['onUnsignedData']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="onHackedData" value="<?php echo $raffel['onHackedData']; ?>" size="20" maxlength="50" /> <br />
                    <input type="text" name="onDifferentData" value="<?php echo $raffel['onDifferentData']; ?>" size="20" maxlength="50" /> <br />

                    <input type="text" name="BattlEye" value="<?php echo $raffel['BattlEye']; ?>" size="20" maxlength="50" /> <br />

                    <input type="submit" name="eintragen" id="eintragen" value="Abschicken" />
                    </form>
                    ps: (KULT) -> Mr. Ormond aka Mr.Ormän -> Das Krokodil und sein Nilpferd ? Wikipedia
                    Zuletzt geändert von cxxl; 05.06.2011, 21:25.

                    Kommentar


                    • #11
                      Mit solchen Sachen hatte ich am Anfang auch meine Probleme - PHP ist Anfangs echt nicht so einfach.

                      Kommentar


                      • #12
                        Zitat von Jones3211 Beitrag anzeigen
                        Mit solchen Sachen hatte ich am Anfang auch meine Probleme - PHP ist Anfangs echt nicht so einfach.
                        Oh ja, manchmal ist es leichter mit voller Montur auf einen 3000er zu sprinten als so einen 5Zeiler zu verstehen

                        Mal im Ernst, ich bin/war selber schuld.

                        Habe die Sache hier gänzlich falsch angefangen.
                        Hatte vom Programmieren kaum Ahnung und wollte gleich alles. Also hab ich mir zig Scripte angeschaut und versucht diese ohne elementares Hintergrundwissen zu verstehen. So nach dem Motto, anschauen verstehen und dann geht das schon.

                        Es geht auch, aber nur als "light-version". Gerade mit diesen Array hab ich echt so meine Schmerzen gehabt. Und mal ehrlich, sich das Wissen nur zu erlesen ist ab dann sinnfrei, wenn man es nicht wirklich versteht und keiner in der Nähe ist, der dir das anhand eines Beispiels erläutert.

                        Bist in einem Seminar,Kurs oder CodebashGuru wo dir die Theorie mit Praxisbeispielen nochmals in die Birne gezimmert wird, dann ist das was ganz anderes, als wenn man alle paar Minuten vor einem neuen Problem/Phänomen steht und du dich totgoogelst. Wobei es auch noch jeder anders macht und du dann gar nicht mehr durchblickst unter Umständen.

                        Es läuft zwar alles das ws ich mir vorstellte, aber schön ist anders. Diesen Mißstand gilt es nun endlich mal zu beheben

                        Und wenn man dann noch ein Forum/Community findet die auch mit Anfängern ordentlich umgeht und nicht von oben herab behandelt, dann wird das schon!
                        Zuletzt geändert von cxxl; 05.06.2011, 21:57.

                        Kommentar

                        Lädt...
                        X