<input type=\"hidden\" Problem

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

  • <input type=\"hidden\" Problem

    Ich weiss nicht wieso, aber mein Script Funzt nicht. Ich glaube, es liegt daran, dass der Dateipfad aus dem
    <input type=\"hidden\" name=\"datei\" value=\"$pfad\">";
    nicht übernommen wird. Also ich lade eine im Formular eingetipte Datei in Textarea, dann möchte ich veränderungen treffen, also im Textarea und den ganzen Inhalt der Datei überschreiben
    Kann mir bitte jemand helfen.
    PHP-Code:
    <?
    if(isset($select)) {
    $datei = "$pfad";
    @$fp = fopen($datei,"r");
    if (!$fp) { 
        print "<b>Datei: $datei wurde nicht gefunden</b><br>\n"; 
    } else { 
        while (!feof($fp)) { 
            $quelltext .= fgets($fp, 4096);
        }  

    @fclose($fp);                      
    echo" <textarea name=\"new\"  cols=64 rows=30>".$quelltext."</textarea>"; 
    echo" <input type=\"hidden\" name=\"pfad\" value=\"$pfad\">";
    if(isset($speichern)) {
    $datei = fopen("$pfad","w");
    $new = stripslashes($new);
    fputs($datei, "$new");
    fclose($datei);
    }
    }
    ?>
    Wenn ich das so mache, geht das alles, bloss ich kann nur eine Datei bearbeiten und bei neuer Eingabe von Datei pfad wir das nicht übernomen

    PHP-Code:
    <?
    if(isset($pfad)) {     
    $datei = "$pfad";
    @$fp = fopen($datei,"r");
    if (!$fp) { 
        print "<b>Datei: $datei wurde nicht gefunden</b><br>\n"; 
    } else { 
        while (!feof($fp)) { 
            $quelltext .= fgets($fp, 4096);
        }  

    @fclose($fp);                      
    echo" <textarea name=\"new\"  cols=64 rows=30>".$quelltext."</textarea>"; 
    echo" <input type=\"hidden\" name=\"pfad\" value=\"$pfad\">";
    if(isset($speichern)) {
    $file = fopen("$datei","w");
    $new = stripslashes($new);
    fputs($file, "$new");
    fclose($file);
    }
    }
    ?>
    Zuletzt geändert von archie; 05.05.2002, 19:03.

  • #2
    Ich schätze mal der Fehler kommt da her, daß die Leseroutine vor der Speicherroutine sitzt und beim Speichern immer wieder zuerst ausgeführt wird.

    Wenn du die Datei jedesmal erst einliest, bevor du sie speicherst, werden die Eingaben im Textfeld erst wieder mit den frisch eingelesenen Daten gefüllt.

    Setz die Speicherroutine einfach an den Anfang, dann müsste es funzen.

    Hab mal folgende Variante bei mir probiert, die funzt (vorausgesetzt, $pfad wird beim ersten Aufrufen übergeben, logo):
    PHP-Code:
    <?
    if(isset($speichern)) {
      $datei = fopen($pfad, "w");
      $new = stripslashes($new);
      fwrite($datei, "$new");
      fclose($datei); }

    $datei = file($pfad);
    while (list(,$line)=each($datei)) $quelltext .= $line;

    echo"
    <form method=post>
    <textarea name=\"new\"  cols=64 rows=30>".$quelltext."</textarea>
    <input type=\"hidden\" name=\"pfad\" value=\"$pfad\">
    <input type=submit name=speichern value=Speichern>
    </form>
    ";
    ?>
    Zuletzt geändert von mkJack; 05.05.2002, 19:59.
    Immer erst mal gucken, ob Benzin im Tank ist ...

    Kommentar


    • #3
      Warning: Variable passed to each() is not an array or object in /home/www/htdocs/deck-kater.de/quellcode.php on line 52

      Kommentar


      • #4
        [FONT=courier new]Warning: Variable passed to each() is not an array or object in \test\test.php on line 9[/FONT]

        Die Meldung bekomme ich auch. Aber nur, wenn ich den Pfad beim ersten Aufruf der Datei nicht angebe.

        Getestet habe ich so: test.php?pfad=test.txt

        Klappert einwandfrei bei mir, auch, wenn ich dann den Speichern-Knopp drücke.
        Immer erst mal gucken, ob Benzin im Tank ist ...

        Kommentar


        • #5
          Danke für dein Tip!!
          Vorteile nach jedem SPEICHERN, hast du eine Möglichkeit neue Datei aufzuwählen
          Hab das erst mal so gemacht:
          PHP-Code:
          <?
          if(isset($speichern)) {
          $file = fopen("$pfad","w");
          $new = stripslashes($new);
          fputs($file, "$new");
          fclose($file);
          } else {
          $datei = "$pfad";
          @$fp = fopen($datei,"r");

          if (!$fp) { 
              print "<b>Datei: $datei wurde nicht gefunden</b><br>\n"; 
          } else { 
              while (!feof($fp)) { 
                  $quelltext .= fgets($fp, 4096);
              }  

          @fclose($fp);                      
          echo" <textarea name=\"new\"  cols=64 rows=30>".$quelltext."</textarea>"; 
          echo" <input type=\"hidden\" name=\"pfad\" value=\"$pfad\">";
          }
          ?>
          Zuletzt geändert von archie; 05.05.2002, 22:16.

          Kommentar


          • #6
            Hast du auch ne Ahnung, wie ich CHMOD der Datei rauskriegen kann, dann

            chmod($datei,0777);
            $file = fopen("$datei","w");
            $new = stripslashes($new);
            fputs($file, "$new");
            fclose($file);
            chmod($datei,0644); \\HIER soll anstaat 0644 alte CHMOD Einstellung stehen


            Und wieso kriege ich ne Fehlermeldung, wenn ich vor
            fclose($file);
            Das hier setze
            touch("$file");

            Kommentar


            • #7
              Nein, sorry. Zu CHMOD kann ich dir leider nichts sagen.
              Aber suche mal im Forum, da ist mir das Thema schon unter die Augen gekommen.
              Zuletzt geändert von mkJack; 05.05.2002, 22:34.
              Immer erst mal gucken, ob Benzin im Tank ist ...

              Kommentar


              • #8
                Original geschrieben von mkJack

                Getestet habe ich so: test.php?pfad=test.txt
                hmm, wenn ich beim erstaufruf der Seite sowas nicht eingebe, dann klappt es bei mir auch nicht

                Kommentar


                • #9
                  Ja klar klappt das nicht, woher soll das Script denn auch den Pfad wissen.
                  Immer erst mal gucken, ob Benzin im Tank ist ...

                  Kommentar


                  • #10
                    chmod

                    $perms = fileperms($datei); // siehe auch clearstatcache
                    chmod($datei,0777);
                    $file = fopen("$datei","w");
                    $new = stripslashes($new);
                    fputs($file, "$new");
                    fclose($file);
                    chmod($datei,$perms);
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar


                    • #11
                      Titus das geht irgendwie nicht
                      Irgendwie gibt es probleme mit CHMOD
                      [COLOR=red]Warning: chmod failed: Operation not permitted [/COLOR]

                      Und kann man es verhindern, dass mal beib erstaufruf der Seite immer ?pfad=Datei.txt setzen muss?

                      PHP-Code:
                       <?
                      echo" <input type=\"hidden\" name=\"pfad\" value=\"$pfad\">";
                      if(isset($speichern)) {
                      print "Datei: $pfad wurde aufgewählt!";
                      $perms = fileperms($pfad);
                      chmod($pfad,0777); 
                      $file = fopen("$pfad","w");
                      $new = stripslashes($new);
                      fputs($file, "$new");
                      fclose($file);
                      chmod($pfad,$perms);
                      } else {
                      $datei = "$pfad";
                      @$fp = fopen($datei,"r");

                      if (!$fp) { 
                          print "<b>Datei: $datei wurde nicht gefunden</b><br>\n"; 
                      } else { 
                          while (!feof($fp)) { 
                              $quelltext .= fgets($fp, 4096);
                          }  

                      @fclose($fp);                      
                      echo" <textarea name=\"new\"  cols=64 rows=30>".$quelltext."</textarea>"; 
                      }
                      ?>
                      Zuletzt geändert von archie; 06.05.2002, 15:08.

                      Kommentar


                      • #12
                        > Titus das geht irgendwie nicht
                        > Irgendwie gibt es probleme mit CHMOD
                        > Warning: chmod failed: Operation not permitted
                        PHP braucht Schreibrechte im Verzeichnis und auf die Datei, chmod anwenden zu können.

                        > Und kann man es verhindern, dass mal beib erstaufruf der
                        > Seite immer ?pfad=Datei.txt setzen muss?
                        jupp
                        if (!$pfad) $pfad = 'Datei.txt';
                        mein Sport: mein Frühstück: meine Arbeit:

                        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                        Kommentar


                        • #13
                          @ Titus \\ if (!$pfad) $pfad = 'Datei.txt';
                          Na ja wenn ich einen Dateinamen vergebe, dann kann ich doch keine mehr aus dem Formular reinkriegen oder?
                          \\\PHP braucht Schreibrechte ....
                          Ich habe dieser Dtei 777 vergeben, also hat die Datei meine Erlaubnis andere Dateien zu ändern oder?

                          Kommentar


                          • #14
                            Original geschrieben von archie
                            @ Titus \\ if (!$pfad) $pfad = 'Datei.txt';
                            Na ja wenn ich einen Dateinamen vergebe, dann kann ich doch keine mehr aus dem Formular reinkriegen oder?
                            nope. der $pfad wird ja nur gesetzt, wenn keiner gegeben ist.
                            Ich habe dieser Dtei 777 vergeben, also hat die Datei meine Erlaubnis andere Dateien zu ändern oder?
                            Welcher Datei? dem Skript? Die Rechte sind piep-egal, hauptsache PHP darf lesen.
                            Um chmod auf eine Datei anwenden zu können, muss PHP (d.h. der User, in dessen Namen PHP ausgeführt wird) die entsprechenden Rechte haben.
                            mein Sport: mein Frühstück: meine Arbeit:

                            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                            Kommentar

                            Lädt...
                            X