• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datei via button löschen

bjoernmuehle

Neues Mitglied
Hallo zusammen,
Ich habe folgendes Problem: ich möchte mittels eines normalen Buttons, die Datei löschen auf der sich der Button befindet. Das Problem bei der Sache ist das diese Datei als Vorlage dient und immer andere Dateinamen hat. Bräuchte quasi sowas wie aktuelle Datei löschen und zurück zur Startseite...

Vg
Bjørn
 
Nach dem Welterfolg von Datei via Button erstellen jetzt der zweite Teil der Saga: Datei via button löschen!

Teil 3 wird zu Ostern erwartet. Arbeitstitel: datei via button bearbeiten. ;)

PHP:
<?php

if (isset($_POST['action']) && $_POST['action'] === 'delete') {
    unlink(__FILE__);
    header('Location: http://example.org/startseite.php');
    exit;
}

?><!DOCTYPE html>

<html lang="en">

    <head>
        <meta charset="utf-8" />
        <title>New</title>
    </head>

    <body>
        <form method="post" action="">

            <p>
                <input type="hidden" name="action" value="delete" />
                <input type="submit" value="Delete me" />
            </p>

        </form>

    </body>

</html>

Einsatz auf eigene Gefahr.
 
Geht das überhaupt? Zu mindestens unter Windows sollte man keine Datei löschen können die von einem Prozess offen gehalten wird.
 
Unter Windows habe ich es jetzt nicht getestet. Unter Linux geht's bei mir.

Aber im Grunde ist es eh kein guter Stil, das so zu machen, denke ich. Besser wäre es, das Formular mit der zu löschenden Datei als Parameter an eine weitere „Management“-Datei zu schicken, die dann die Löschung vornimmt.
 
So ist es. Die Arbeiten an einer Trilogie laufen auf Hochtouren. !

Und wieder klappt es nicht auf Anhieb. :(
Er lädt zwar beim Klick auf den Button kurz, aber mehr passiert auch nicht.
PHP:
 <?php
if (isset($post['action']) && $_POST['action'] === 'delete') {
unlink(__FILE__);
header("Location: http://localhost/ILSU/index.php");
exit;
}
?>
HTML:
  <form method="post" action="">
                 <table cellspacing="10" cellpadding="0">
                         <tr>
                                 <td width="4"></td>
                                 <td><p><input name="action" type="hidden" value="delete" /><input type="submit" style="width: 220px;" value="delete me" /></p></td>
                                 <td><input type="button" style="width: 220px;" value="Disposition drucken & abschließen" onclick="javascript:window.print()"/></td>
                         </tr>
                 </table>
 </form>

Ich habe auch schon versucht, mittels des Formulars eine andere PHP Datei auszuführen. Nur wie definiere ich dann die zu löschende Datei, also die Seite von der aus diese Datei ausgeführt wurde?

VG
 
Per GET-Parameter zum Beispiel. Aber da musst du natürlich aufpassen, dass dir nicht ein Spaßvogel wichtige Dateien übergibt, die dann gelöscht werden.

temp.php:

PHP:
<?php

if (isset($_POST['action']) && $_POST['action'] === 'delete') {    
    header('Location: http://www.example.org/index.php?action=unlink&file=' . __FILE__);
    exit;
}

?><!DOCTYPE html>

<html lang="en">

    <head>
        <meta charset="utf-8" />
        <title>New</title>
    </head>

    <body>
        <form method="post" action="">

            <p>
                <input type="hidden" name="action" value="delete" />
                <input type="submit" value="Delete me" />
            </p>

        </form>

    </body>

</html>

index.php:

PHP:
<?php

if ($_GET['action'] === 'unlink') {
    $path = realpath($_GET['file']);

    if (strpos($path, '/directory/where/files/may/be/deleted/from/') === 0) {
        unlink($path);
        header('Location: http://www.example.org/');
        exit;
    }
}
 
Also dein erster Code ist der auf dem Formular selber, also auf der Seite die gelöscht werden soll?
Der zweite dann ein PHP Code in ner anderen Datei, auf die mein Formular verlinkt?


Vg
 
Ja, das war die Idee. Stimmt, die Header-Weiterleitung im ersten Script ist eigentlich Unsinn. Die entsprechende Seite könnte auch bei der Action des Formulars eingetragen werden.
 
Also ich habe das Ganze nun etwas umstrukturiert. In meinem Formular lese ich den aktuellen Dateipfad aus:
HTML:
  <?php
$file = $_SERVER['REQUEST_URI'];
?>
  <form method="post" action="http://localhost/ILSU/unlink.php">

                                          <p><input name="action" type="text" value="<?php echo "$file";?>" />
                                         <input type="submit" style="width: 220px;" value="delete me"/></p>

 </form>
und übergebe diesen dann an eine externe php-Datei:
PHP:
<?php
$file2 = $_POST["action"];
unlink($file2);
header("Location: http://localhost/ILSU/content.html");
exit;
?>
Nur irgendwie passiert da nix. Aber ne Fehlermeldung bekomme ich auch nicht. :(
 
Zuletzt bearbeitet:
Jetzt habe ich das Ganze schon soweit, dass ich diese Fhlermeldung bekomme:

Warning: unlink() [function.unlink]: http does not allow unlinking in C:\xampp\htdocs\ILSU\unlink.php on line 12
Konnte die Datei /ILSU/Einsaetze/Einsatz2.php nicht löschen!

Wie kriege ich das lokal hin, die Rechte auf 777 zu stellen? Schreibgeschützt ist es nicht und ich habe dem Ordner die Rechte "Jeder" und "Lesen/Schreiben" gegeben.

LG
 
„http does not allow unlinking“ = Dateien, die du per http-Protokoll angibst, können nicht gelöscht werden.

Nutze eine lokale Pfadangabe.
 

Neueste Beiträge

Zurück
Oben