Ankündigung

Einklappen
Keine Ankündigung bisher.

Bilddatei aus gewünschtem Ordner löschen!

Einklappen

Neue Werbung 2019

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

  • Bilddatei aus gewünschtem Ordner löschen!

    Hallo liebe Community.

    Ich stehe vor einem Problem. Ich kann in meinem Script die Bilder löschen die mir angezeigt werden, jedoch ist es einem auch erlaubt den ganzen Script wiederum zu löschen. Ich habe schon das ganze Internet durch forstet aber nichts gefunden, um das gewünschte Bild nur aus diesem bestimmten Ordner zu löschen.

    Script:
    PHP-Code:
    <?php

    include 'bilder/images/loeschen.php';
    require 
    'bilder/Gallery.php';


    // CONTROLLER

    $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");
    }

    if(isset(
    $_GET['delete'])) unlink($_GET['delete']);  

    // AUSGABE

    ?><!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>
            

            <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>
                               
                                <a href="?delete=<?php echo $image['full']; ?>">Delete</a>
                            </div>
                        <?php endforeach; ?>
                    </div>
    <?php else: ?>
                    Keine Bilder vorhanden.
                    <?php endif; ?>
            </div>
        </body>
    </html>


  • #2
    Mutter, hol' mich vonne Zeche, was du da machst, ist extrem gefährlich:
    PHP-Code:
    if(isset($_GET['delete'])) unlink($_GET['delete']); 
    Ungeprüft den Parameter zu übernehen und gnadenlos löschen, auweia!!! Du musst natürlich prüfen, ob die Datei auch in dem Verzeichnis liegt, in dem gelöscht werden darf.
    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

    Kommentar


    • #3
      Genau deswegen habe ich diesen Topic erstellt. Die Bilder liegen in bilder/images/ und auch nur von diesem Ordner sollen die Bilder auch gelöscht werden, nichts anderes ! Nur hab ich sehr wenig Erfahrung in PHP und weiß nun nicht mehr weiter ..

      Kommentar


      • #4
        Und du glaubst, es erneut zu posten hilft dabei, es besser zu verstehen?
        Zumal du bereits korrekte Antworten bekommen hattest (inklusive dem Hinweis auf die Gefährlichkeit)..

        http://www.php.de/php-einsteiger/109...-loeschen.html
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Um ehrlich zu sein, erhoff ich es mir. Ich versuche es nämlich schon 2 Tage zu verbessern .. ohne Erfolg.

          Kommentar


          • #6
            Zitat von Rusko Beitrag anzeigen
            Um ehrlich zu sein, erhoff ich es mir. Ich versuche es nämlich schon 2 Tage zu verbessern .. ohne Erfolg.
            da würde ich gerne mal den changeLog lesen.

            Kommentar


            • #7
              Zitat von Rusko
              Die Bilder liegen in bilder/images/ und auch nur von diesem Ordner sollen die Bilder auch gelöscht werden, nichts anderes !
              file_exists()
              Zitat von Rusko
              Nur hab ich sehr wenig Erfahrung in PHP und weiß nun nicht mehr weiter ..
              Offizielle PHP Dokumentation
              http://www.php.de/php-einsteiger/489...rundlagen.html
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #8
                Zitat von Rusko Beitrag anzeigen
                das gewünschte Bild nur aus diesem bestimmten Ordner zu löschen.
                Entweder du führst eine Liste der Dateien, die gelöscht werden dürfen (white list) oder eine Liste der Dateien, die nicht gelöscht werden dürfen (black list).
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Nein, wozu?
                  Wenn jedes Bild im Ordner bilder/images gelöscht werden darf, reicht es aus, mit file_exists zu prüfen, ob es sich in dem Verzeichnis befindet.
                  Wenn ja => wech damit...
                  Competence-Center -> Enjoy the Informatrix
                  PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                  Kommentar


                  • #10
                    Die white list ist doch schon da...

                    PHP-Code:
                    if(isset($_GET['delete'])) {
                        foreach (
                    $images AS $key => $image) {
                            if(
                    $image != $_GET['delete']) continue;
                            
                            
                    unlink($image);
                            unset(
                    $images[$key]);
                        }

                    Kommentar


                    • #11
                      ...das wär vielleicht besser mit in_array() zu lösen!
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar


                      • #12
                        Zitat von Arne Drews Beitrag anzeigen
                        Nein, wozu?
                        Wenn jedes Bild im Ordner bilder/images gelöscht werden darf, reicht es aus, mit file_exists zu prüfen, ob es sich in dem Verzeichnis befindet.
                        Wenn ja => wech damit...
                        Nö... es muss überprüft werden, ob man tatsächlich innerhalb von bilder/images löscht.
                        file_exists() sagt nur, ob eine Datei existiert: file_exists("/etc/passwd") wird true liefern, ist aber garantiert nicht auf der Liste der erlaubten Dateien...
                        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                        Kommentar


                        • #13
                          Whitelist oder Blacklist führen, wieso? soll sich PHP doch gefälligst selbst drum kümmern:
                          PHP-Code:
                          <?php
                            session_start
                          ();

                            if(isset(
                          $_GET['delete']) && isset($_SESSION[$_GET['delete']])) 
                                 
                          unlink($_SESSION[$_GET['delete']]);  

                            
                          $_SESSION = array();

                            include 
                          'bilder/images/loeschen.php';
                            require 
                          'bilder/Gallery.php';

                            
                          // CONTROLLER

                            
                          $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");
                            }

                            
                          ?>
                            :
                            :
                            :
                          <?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>
                                      <?php 
                                        id 
                          uniqid();
                                        
                          $_SESSION[$id] = $image['full']
                                      
                          ?>
                                       <a href="?delete=<?php echo $id?>">Delete</a>
                                   </div>
                               <?php endforeach; ?>
                              </div>
                          <?php else: ?>
                               Keine Bilder vorhanden.
                            <?php endif; ?>
                            </div>
                           </body>
                          </html>
                          Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                          Kommentar


                          • #14
                            @Istegelitz:
                            Jau, aber wir reden hier doch nur von einem Script, das es ermöglichen soll, Bilder mit Hilfe eines Klicks aus einem bestimmten Ordner zu löschen.

                            Die Prüfung, ob die Datei an sich gelöscht werden darf oder nicht, ergibt sich aus der Tatsache, daß sie sich in dem entsprechenden Verzeichnis befindet, aus dem - wie der TE ja mitgeteilt hatte - alle Bilder zur Löschung berechtigt sind.

                            PHP-Code:
                            $sImagesFolder './bilder/images/';
                            $aImages array_map(
                                    
                            'basename',
                                    
                            glob$sImagesFolder '*.{jpg,png}'GLOB_BRACE )
                                );

                            $sImage2Delete htmlspecialchars$_GET['delete'] );
                            $bIsValidFile in_array$sImage2Delete$aImageNames );


                            if ( 
                            $bIsValidFile ) {

                                
                            unlink$sImagesFolder $sImage2Delete );


                            ...nur so zum Verständnis, was ich meine.


                            @uha:
                            Und wann erwartest Du hier ein true?
                            PHP-Code:
                            if(isset($_GET['delete']) && isset($_SESSION[$_GET['delete']])) 
                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #15
                              Ja, ich hab deinen Ansatz ignoriert, sorry :/
                              Dh. Pfadangaben sollen unterbunden werden, es werden nur reine Dateinamen angegeben, und es sind keinerlei andere Dateien im Verzeichnis. Ok, unter diesen Gegebenheiten hast du natürlich völlig Recht, da reicht file_exists(), solange man peinlich genau darauf achtet, das man nicht aus dem Verzeichnis ausbrechen kann.
                              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                              Kommentar

                              Lädt...
                              X