Ankündigung

Einklappen
Keine Ankündigung bisher.

löschen einer datei nicht möglich

Einklappen

Neue Werbung 2019

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

  • löschen einer datei nicht möglich

    hallo gemeinschaft

    möchte gerne per script eine datei auf meinerm server löschen
    PHP-Code:
    <?php

    echo "BilderID".$_GET["bilder_id"];
    $pdo= new PDO("mysql:host=127.0.0.1;dbname=bilderdb;""root""");
    $bi $_GET["bilder_id"];
    $im $_GET["thumb"];
    $zi $_GET["zipdatei"];

    echo 
    "ZIPFILE"$zi;
     
    $statement $pdo->prepare("DELETE FROM bilder WHERE bilder_id = ?");
    $statement->execute(array($bi));


    if ( @ 
    unlink "images/".$im ) )
    {
      echo 
    'Die Datei ' $im ' wurde gelöscht!';
    }
    else
    {
      echo 
    'Konnte die Datei ' $im ' nicht löschen!';
    }
    if ( @ 
    unlink "images/zip/".$zi ) )
    {
      echo 
    'Die Datei ' $zi ' wurde gelöscht!';
    }
    else
    {
      echo 
    'Konnte die Datei ' $zi ' nicht löschen!';
    }


    ?>
    das ist die ausgabe
    BilderID72 ZIPFILEIMG_1167.zipKonnte die Datei moi.jpg nicht löschen!Konnte die Datei IMG_1167.zip nicht löschen!

    weiss nicht warum die datei nicht gelöscht wurde

  • #2
    Arbeite immer mit absoluten Dateipfaden.

    Mit __DIR__ erhältst du übrigens den absoluten Pfad zum Verzeichnis der aktuellen PHP-Datei.

    Kommentar


    • #3
      so klappt es leider auch nicht

      PHP-Code:
      <?php
      echo $path __DIR__ ;

      echo 
      "BilderID".$_GET["bilder_id"];
      $pdo= new PDO("mysql:host=127.0.0.1;dbname=bilderdb;""root""");
      $bi $_GET["bilder_id"];
      $im $_GET["thumb"];
      $zi $_GET["zipdatei"];

      echo 
      "ZIPFILE"$zi;
       
      $statement $pdo->prepare("DELETE FROM bilder WHERE bilder_id = ?");
      $statement->execute(array($bi));


      if ( @ 
      unlink $path."'\'images'\'".$im ) )
      {
        echo 
      'Die Datei ' $im ' wurde gelöscht!';
      }
      else
      {
        echo 
      'Konnte die Datei ' $im ' nicht löschen!';
      }
      if ( @ 
      unlink $path."/images/zip".$zi ) )
      {
        echo 
      'Die Datei ' $zi ' wurde gelöscht!';
      }
      else
      {
        echo 
      'Konnte die Datei ' $zi ' nicht löschen!';
      }


      ?>

      Kommentar


      • #4
        Zitat von jensg
        das ist die ausgabe
        BilderID72 ZIPFILEIMG_1167.zipKonnte die Datei moi.jpg nicht löschen!Konnte die Datei IMG_1167.zip nicht löschen!

        weiss nicht warum die datei nicht gelöscht wurde
        Dann mach bitte endlich mal die @ weg und PHP wird dir den Grund schon sagen. Darauf solltest du aber schon auch selbst kommen.

        Und ein echo "images/zip/".$zi damit du siehst was du da eigenlich genau löschen willst, und ob es den Pfad/Datei dort überhaupt solltest du auch noch hinbekommen, oder?

        Ein bisschen mehr selbständiges denken bitte.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Was um Himmels Willen soll denn das sein?

          PHP-Code:
          if ( @ unlink $path."'\'images'\'".$im ) ) 
          PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

          Kommentar


          • #6
            habs nun so gemacht

            PHP-Code:
            $file_with_path_im $path "/images/".$im;
            $file_with_path_zi $path "/images/zip/".$zi;


            if (
            file_exists($file_with_path_im)) {
              
            unlink($file_with_path_im);
              echo 
            "Datei gelöscht";
            }

            if (
            file_exists($file_with_path_zi)) {
              
            unlink($file_with_path_zi);
              echo 
            "Datei gelöscht";

            Kommentar


            • #7
              Noch zwei wichtige Anmerkungen:

              1. Niemals Nutzereingaben vertrauen. Man kann durch geschickt gewählte GET-Parameter derzeit mit diesem Script wohl jede Datei von deinem Webspace löschen. ?thumb=/../../index.php oder dergleichen. Du kannst zum Beispiel per realpath erst den normalisierten Pfad zur zu löschenden Datei erzeugen und dann mit strpos oder pathinfo testen, ob er mit dem erwarteten Verzeichnis beginnt beziehungsweise dem erwarteten Verzeichnis entspricht.

              2. Niemals derlei Operationen, die Dinge löschen oder die allgemein was an den Daten ändern, per GET ausführen, sondern immer per POST. Der Grund ist der, dass GET-Requests nach HTTP als „unbedenklich“ gelten. Es steht Clients frei, sie „beliebig“ auszulösen, um etwa weitere Daten vorzuladen oder um die Zielseiten in den Index einer Suchmaschine aufzunehmen oder dergleichen.

              Kommentar

              Lädt...
              X