Hallo
»» <?php
> ob_start();
> if (isset($_POST["delete_sani"]) && !empty($_POST["delete_sani"])) {
> $delete = "*zensiert*" . $_POST["file_sani"];
> unlink($delete);
> header("Location: $PHP_SELF");
> ob_end_flush();
> }
> ?>
Dass zu diesem Zeitpunkt (nach dem hier gezeigten Code zu urteilen) schon jede Menge Ausgabecode zum Browser übermittelt wurde und es deshalb zu spät zum senden von Headern ist, wurde dir ja schon gesagt.
Wenn du schon mit dem Ausgabepuffer arbeitest (ob_start, ob_end_flush), muss das Starten des Ausgabepuffers auch *vor jeglicher* Ausgabe an den Browser stattfinden, also gaaaaaanz oben am Anfang des Skripts. Meist ist das aber unnötig, wenn man sich an das EVA-Prinzip hält. Also zuerst die Eingaben prüfen, dann selbige verarbeiten (dabei eventuell entscheiden, ob man irgendwohin weiterleitet) und erst dann mit den dabei ermittelten Daten die Ausgabe tätigen.
Ach, und noch zwei Sachen:
1. header("Location: ...");
erwartet eine *vollständige* URL mit Protokollangabe etc. pp.. Auch wenn die meisten Browser eine relative Angabe wie die deine selbst ergänzen kann man sich darauf nicht verlassen. Es könnte sein, dass dein Skript deshalb nicht so funktioniert, wie du es wünschst.
2. $PHP_SELF
ist einerseits nicht sicher und andererseits in dieser Schreibweise veraltet. Benutze stattdessen $_SERVER["SCRIPT_NAME"]
, dies allerdings *nicht* bei header("Location: ...");
(wegen der nicht vollständigen URL). Zum Beispiel mit "http://".$_SERVER["HTTP_HOST"]."/".$_SERVER$_SERVER["SCRIPT_NAME"]
kannst du dir die vollständige URL der derzeit geladenen Seite zurückgeben lassen. Je nach Konfiguration des Servers kann dieser Wert auch aus *einer* Servervariable generiert werden. Welche dir zur Verfügung stehen zeigt dir die Ausgabe von phpinfo
.
Schreibe <?php phpinfo(); ?>
in eine eigene Datei, übertrage diese auf den Server und rufe sie im Browser auf. Recht weit unten findest du im Abschnitt "PHP Variables" alles, was dir der Server über PHP zur Verfügung stellt. Zu nutzen sind diese Variablen durch das Voranstellen von "$", aus dem _SERVER["SCRIPT_NAME"] der Auflistung wird also $_SERVER["SCRIPT_NAME"] im Anwendungsfall.
Tschö, Auge