Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zeilen aus .txt Datei löschen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Zeilen aus .txt Datei löschen

    Hi,
    ich arbeite noch nicht alzu lange mit php und habe folgendes Problem:
    Ich brauche ien kleines Skript, das von einer Applikation eine ID übermittelt bekommt, diese soll das Skript dann in einer Textdatei suchen und dann 8 nachfolgende Zeilen löschen. Bei der Schleife, die die ID finden soll bekomme ich aber immer ne Warnung und das Skript tut gar nichts.
    Boardsuchen und Googeln hat mir bis jetzt nicht geholfen

    hier mal der Code:

    PHP-Code:
    <?php
    $https 
    $HTTP_POST_VARS;
    if (
    $https[key]=="wercvn70eidnvjdsfjcvnxl8a")
    {
    $datei fopen("servers.txt""a+");
    $file_array file($datei);
    $ID $https[ServerID];
    for(
    $i=0;i<count($file_array);$i++) {
        if(
    $file_array[$i] == $ID) {
        
    $line=$ID;
        break;
        } 

    fclose($datei);
    unset(
    $file_array[$line]);
    unset(
    $file_array[$line+1]);
    unset(
    $file_array[$line+2]);
    unset(
    $file_array[$line+3]);
    unset(
    $file_array[$line+4]);
    unset(
    $file_array[$line+5]);
    unset(
    $file_array[$line+6]);
    unset(
    $file_array[$line+7]);
    unset(
    $file_array[$line+8]);
    fputs(fopen($datei"w"), implode(""$file_array));
    echo 
    $line;
    fclose($datei);
    } else  echo 
    "AUTH_INCORRECT";
    php?>
    Bin für jeden Vorschlag dankbar


  • #2
    Bei der Schleife, die die ID finden soll bekomme ich aber immer ne Warnung
    Ist die Warnung ein Geheimnis oder warum verräts du sie nicht?

    Gruß
    phpfan

    Kommentar


    • #3
      Erstmal [ php ] statt [ code ] benutzen

      Nur die auffälligsten Dinge
      PHP-Code:
      <?php
      $https 
      $HTTP_POST_VARS
      // $HTTP_POST_VARS; st veraltet nutze $_POST
      if ($https[key]=="wercvn70eidnvjdsfjcvnxl8a")
      // wo ist die Konstante key definiert?
      {
      $datei fopen("servers.txt""a+");
      $file_array file($datei);
      // Betrachte dir im Manual die korrekte Syntax von file()
      $ID $https[ServerID];
      // Wo ist die Konstante ServerID definiert ? 
      for($i=0;i<count($file_array);$i++) {
          if(
      $file_array[$i] == $ID) {
          
      // Vergiss die Linefeeds nicht
          
      $line=$ID;
          break;
          }
      }
      fclose($datei);
      unset(
      $file_array[$line]);
      unset(
      $file_array[$line+1]);
      unset(
      $file_array[$line+2]);
      unset(
      $file_array[$line+3]);
      unset(
      $file_array[$line+4]);
      unset(
      $file_array[$line+5]);
      unset(
      $file_array[$line+6]);
      unset(
      $file_array[$line+7]);
      unset(
      $file_array[$line+8]);
      fputs(fopen($datei"w"), implode(""$file_array));
      echo 
      $line;
      fclose($datei);
      } else  echo 
      "AUTH_INCORRECT";
      php?>
      So jetzt noch aus der/die Warnungen kein Geheimnis mehr machen und der Rest findet sich.

      Kommentar


      • #4
        Die Variablen Key und ID werden von der Applikation übergeben, die das Skript aufruft. Fehlermeldungen (bzw. Warnungen) könnt ihr hier lesen:


        http://phalanx0.ph.funpic.de/fehler.jpg

        Kommentar


        • #5
          Nochmals.

          $HTTP_POST_VARS ist veraltet nutze $_POST

          Wo sind die Konstanten key und ServerID definiert?

          Betrachte dir im Manual die korrekte Syntax von file()

          Kommentar


          • #6
            Ich kann nicht $_POST nehmen, da dann das Skript nicht mehr die Konstanten von dem Programm empfängt, das Skript wird von einem Programm aufgerufen, und das übermittelt dem Skript die Konstanten ID und key, aber das ist gar nicht das Problem, die Übermittlung von den Konstanten funktioniertr wunderbar.


            edit: der Syntax von File() ist

            array file(string filename [, int use_include_path]);

            use_include_path ist optional und bringt in meinem Skript nix...

            also stimmt das doch so, wie ich es gemacht habe, oder?

            Kommentar


            • #7
              Zitat von Phalanx_0
              Ich kann nicht $_POST nehmen, da dann das Skript nicht mehr die Variablen von dem Programm empfängt
              na dann... :wink:
              Zitat von Phalanx_0
              das Skript wird von einem Programm aufgerufen, und das übermittelt dem Skript die Konstanten ID und key,
              interessante methode (konstanten übermitteln)
              Zitat von Phalanx_0
              aber das ist gar nicht das Problem, die Übermittlung von den Konstanten funktioniertr wunderbar.
              dann mach doch mal was DiBo33 geschrieben hat
              Zitat von DiBo33
              Betrachte dir im Manual die korrekte Syntax von file()

              Kommentar


              • #8
                Zitat von Phalanx_0
                Ich kann nicht $_POST nehmen, da dann das Skript nicht mehr die Konstanten von dem Programm empfängt, das Skript wird von einem Programm aufgerufen, und das übermittelt dem Skript die Konstanten ID und key, aber das ist gar nicht das Problem, die Übermittlung von den Konstanten funktioniertr wunderbar.
                Seit wann werden Konstanten übermittelt, das wäre mir neu.

                Ich sehe immer noch nirgends die Definition der Konstanten.

                p.s. hast du jetzt endlich mal im Manual nachgesehen, was file() für ein Parameter erwartet?

                Kommentar


                • #9
                  Zitat von Phalanx_0
                  edit: der Syntax von File() ist

                  array file(string filename [, int use_include_path]);

                  use_include_path ist optional und bringt in meinem Skript nix...

                  also stimmt das doch so, wie ich es gemacht habe, oder?
                  steht da irgendwas von einer resource übergeben? eher nicht...
                  richtig lesen und vor allem verstehen

                  Kommentar


                  • #10
                    Zitat von Phalanx_0
                    edit: der Syntax von File() ist

                    array file(string filename [, int use_include_path]);

                    use_include_path ist optional und bringt in meinem Skript nix...

                    also stimmt das doch so, wie ich es gemacht habe, oder?
                    Hmm, überlege mal, was übergibst du denn für ein Parameter?

                    Kommentar


                    • #11
                      Sorry wenn ich erst seit einer Woche php lerne... kenn mich halt noch nich so aus.
                      Könnt ihr mich dann bitte aufklären und mir sagen was ihr denkt, dann kann ich auch was lernen. Ihr seid grade echt keine große Hilfe für mich

                      Kommentar


                      • #12
                        Zitat von Phalanx_0
                        Ihr seid grade echt keine große Hilfe für mich
                        Dir ist noch nicht bewusst, was für eine Hilfe du gerade hier bekommst.

                        PHP-Code:
                        $datei fopen("servers.txt""a+");
                        $file_array file($datei); 
                        Welche von den 2 Dingen "servers.txt" und $datei ist der Dateiname und welchen übergibst du?


                        Zum Thema Konstanten und Variablen
                        http://www.php-faq.de/q/q-php-variablen.html

                        Kommentar


                        • #13
                          servers.txt ist der Dateiname, und $file ist die zum Schreiben/Lesen geöffnete Datei...

                          Kommentar


                          • #14
                            Zitat von Phalanx_0
                            servers.txt ist der Dateiname,
                            und warum übergibst du dann nicht selbiges?

                            Zitat von Phalanx_0
                            und $file ist die zum Schreiben/Lesen geöffnete Datei...
                            Du meinst $datei

                            Dann schau nochmal im Manual, was fopen() als Wert zurückliefert.

                            Kommentar


                            • #15
                              ja, pardon. Also fopen() liefert den Dateizeiger zurück, imho die Position in der Datei in die dann später gelesen und/oder geschrieben wird. Hab jetzt mal dem Array "servers.txt" zugewiesen und nicht $datei, klappt schon wesentlich besser :wink: .

                              ...nur krieg ich jetzt nen infinite loop und das Skript hat ne Laufzeit von 10 Sekunden (php.ini Maximum)

                              Find ich seltsam, weil die Schleife ja nur so lange ausgeführt wird, bis die letzte Zeile eingelesen und überprüft wurde, ob sie die gesuchte Id ist.

                              Kommentar

                              Lädt...
                              X