Ankündigung

Einklappen
Keine Ankündigung bisher.

Bild Datei aus einem Ordner löschen

Einklappen

Neue Werbung 2019

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

  • Bild Datei aus einem Ordner löschen

    Hallo liebe Community.

    Da ich ein ziemlicher Anfänger bin und ich erst seid wenigen Tagen angefangen habe mit PHP zu arbeiten, hoffe ich nun bei euch Rat zu bekommen

    Ich habe eine Bildergalerie erstellt, in der man Bilder hochladen kann. Diese werden im Ordner /bilder/images/ gespeichert.

    Nun habe ich überhaupt keine Ahnung, wie ich diese aus diesem Ordner löschen kann. Es sollte so ähnlich wie beim hochladen funktionieren, d.h. die Datei auswählen und anschließend auf einen Button klicken, sodass die Datei aus diesem Ordner gelöscht wird

    PHP-Code:
    <?php

    require 'bilder/Gallery.php';


    $gallery = new Gallery();
    $gallery->setPath('bilder/images');

    $images $gallery->getImages(array('jpg''png'));


    if (
    count($_POST) > 0) {
        
    $name $_POST['name'];
        
    move_uploaded_file($_FILES['datei'] ['tmp_name'], "bilder/images/$name");
    }


    #var_dump($_POST);
    ?><!DOCTYPE html>
    <html>
        <head>
            <title>Bildergalerie</title>
            <link rel="stylesheet" href="css/gallery.css">
        </head>
        <body style="background-color: #AAAAAA">
            <font color='#C00000'><h1>Bildergalerie</h1></font>
                

            <FORM method="post" enctype="multipart/form-data" >
                <input type="file" name="datei" value="Durchsuchen"> <br>
                <input type="text" name="name" value="DateiName.jpg"> <br>
                <input type="submit" value="Hochladen">
                <br>
            </FORM>
            
            <a href="index.php">
        <button>Aktualisieren!</button>
    </a>
            <br>
            <br>
            <br>
           
         <FORM method="post" action="" enctype="multipart/form-data" >
                <input type="file" name="datei" value="Durchsuchen"> <br>
                <input type="hidden" name="loeschen" value="1"> <br>
                <input type="submit" value="Entfernen">
            </FORM>   

            <div class="container">
                <?php if ($images): ?>    
                    <div class="gallery cf">
        <?php foreach ($images as $image): ?>
                            <div class="gallery-item">
                                <a href="<?php echo $image['full']; ?>"> <img src="<?php echo $image['full']; ?>"></a>
                            </div>
                        <?php endforeach; ?>
                    </div>
    <?php else: ?>
                    There are no images.
                    <?php endif; ?>
            </div>
        </body>
    </html>


  • #2
    Ziemlich dicke Sicherheitslücke hast du da eingebaut.

    Dateien löschen kannst du mit unlink();
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Die Seite soll auch noch gar nicht online kommen

      Aber das ich Dateien mit unlink(); löschen kann, weiß ich auch.

      Ähnlich wie beim Hochladen, soll es auch beim Löschen aussehen:

      PHP-Code:
      <FORM method="post" action="" enctype="multipart/form-data" >
                  <
      input type="file" name="datei" value="Durchsuchen"> <br>
                  <
      input type="hidden" name="loeschen" value="1"> <br>
                  <
      input type="submit" value="Entfernen">
              </
      FORM
      Nur wie sehen jetzt die nächsten Schritte aus ..

      Wie gesagt. Ich beschäftige mich nun seid 3 Tagen mit PHP und hab demnach wenig/gar keine Erfahrung.
      Über einen Hilfescript würde ich mich demnach seeeehr freuen

      Kommentar


      • #4
        Pack das mit in die Schleife die alle Bilder durchgeht:
        PHP-Code:
        <a href="?delete=<?php echo $image['full']; ?>">Delete</a>
        Und das an den Anfang des Scripts:
        PHP-Code:
        if(isset($_GET['delete'])) unlink($_GET['delete']); 
        Ich möchte noch kurz anmerken, dass dein Upload Sicherheitslücken enthällt und mein Codeschnipsel genauso, dieses Script darf so wie es ist niemals Online gehen!
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          Ich danke dir sooo unglaublich sehr !!

          Kommentar


          • #6
            Allerdings kommt jetzt eine Fehlermeldung, obwhol alles einwandfrei klappt

            Warning: unlink(bilder/images/test10.jpg): No such file or directory in C:\www\index.php on line 5

            Kommentar


            • #7
              Dann hast du die Seite doppelt mit dem gleichen GET-Parameter aufgerufen.
              Zitat von nikosch
              Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

              Kommentar


              • #8
                Hättest du auch eventuell eine sicherere Codierung die nicht meine ganze .php Datei löschen könnte.
                Zum Glück hatte ich eine Sicherheitskopie

                Kommentar


                • #9
                  Wozu? Wenn du nicht selbst den GET-Parameter manipulierst kann nichts passieren. Außerdem schafft der Upload Lücken die noch viel gröberer sind (Ein Angreifer könnte eigenen PHP-Code auf deinem Server ausführen).
                  Zitat von nikosch
                  Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                  Kommentar


                  • #10
                    Ich bin dabei das ganze nun bisschen sicherer zu machen (zu mindestens beim löschen und später auch beim uploaden), nur habe ich Probleme in der Umsetzung, da ich nicht die benötigten Kenntnisse habe.

                    Ich weiß auch, dass es egoistisch klingt von anderen Programmierern Codes zu erwarten, aber dies ist nun mal ein wichtiges Projekt für mich und wäre dir deshalb sehr dankbar!

                    Kommentar


                    • #11
                      Was du tun musst:
                      - Die art der hochgeladenen Datei prüfen (MimeType, ...)
                      - Den eingegebenen Dateinamen validieren
                      - Beim löschen den GET-Parameter validieren
                      Zitat von nikosch
                      Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                      Kommentar


                      • #12
                        Ich bin selber noch ein PHP-Neuling, aber ich denke worauf hier zum Teil hingewiesen wird ist, dass du beim Upload nicht prüfst, ob es wirklich ein Bild ist. Hier könnte eine .php Datei ins Bilderverzeichnis hochgeladen werden?

                        Oder liege ich da falsch? ... Wie gesagt, ich bin ein PHP-Neuling

                        Gruß

                        Edit: Tja, ein bisschen zu langsam... aber ich weiß nun, dass ich mit meiner Vermutung recht hatte

                        Kommentar


                        • #13
                          Zitat von tkausl Beitrag anzeigen
                          Was du tun musst:
                          - Die art der hochgeladenen Datei prüfen (MimeType, ...)
                          Gerade die Überprüfung des MimeType kann man sich wirklich schenken.

                          Zitat von tkausl Beitrag anzeigen
                          - Den eingegebenen Dateinamen validieren
                          Für das Abspeichern der Datei mittels move_uploaded_file() am besten eigene Dateinamen vergeben. Dazu eignet sich zum Beispiel ein UUID.

                          Der mit übermittelte Dateiname kann zusätzlich - nach einer Säuberung - abgespeichert werden.

                          Kommentar

                          Lädt...
                          X