-
Hallo.

Bevor ich meine Frage stelle, möchte ich erst einmal erklären was ich vor habe.
Mit einem Generator wird eine Grafik erstellt (Avatar-Grafik). Nach dem generieren, wird die Grafik in einem Verzeichniss (Custom-Avatare) gespeichert. Wenn man das Avatar benutzen möchte, wird es in das Verzeichniss (Avatare) verschoben.
Wenn man das Avatar benutzt, wird ein Teil der URL in der Datenbank gespeichert.
Beispiel:
Ist es möglich irgendwie zu prüfen ob die Avatare im Verzeichniss "aktiv" sind? Es kommt öfter vor das ein Avatar gar nicht mehr verwendet wird und es trotzdem im Verzeichniss (Avatare) ist. Die Avatare manuell zu löschen ist praktisch unmöglich. Daher suche ich eine Möglichkeit die Avatare per Knopdruck prüfen und löschen zu lassen.PHP-Code:URL:
www.meine-seite.de/avatare/avatar-bl5000.png
Code in der Datenbank:
bl5000
-
11.11.10 18:31 #2
Hallo bl5000,
das ist eigentlich ganz einfach, zurerst schreibst du alle Bilder die es gibt aus der Datenbank in ein Array-> und danach löschst du über eine if-bedingung einfach die .. die in der false Schleife landen
Achtung :PHP-Code:$sql_pic = mysql_query("SELECT userpic FROM table")OR die (mysql_error()); ## Tabelle wählen
while ($pic = mysql_fetch_array($sql_pic)){ ## beginne While
if(!empty($pic["userpic"])){ ## Nur Zeilen wo spalte userpic nicht leer ist
$pics[] = $pic["userpic"]; ## schreibe Daten in Array $pics
}
}
$verz = opendir ('userpic'); ## Öffne verzeichniss "userpic" ggf. /ordner -> und schriebe in $verz
while ($file = readdir ($verz)) { ## beginne while und lies $verz aus -> Datein.
if(!empty($pics)){ ## ist $pics nicht leer dann ->
if($file != "rl" && $file != "." && $file != ".." && $file != "thumb"){
if(!in_array($file,$pics)){
@unlink("userpic/".$file); ## hier dann wird die Löschung vorgenommen.
}
}
}
Hier ist zu beachten das es noch weitere Ordner geben kann die natürlich nicht geprüft werden sollen also ordner "rl" und natürlich auch nicht die ordner darunter "." -> und auch nicht die Ordner noch weiter dahinter "..".PHP-Code:if($file != "rl" && $file != "." && $file != ".." && $file != "thumb"){
So in etwa
ist aber ungetestet.
Mfg SplaterGeändert von Splater (11.11.10 um 18:37 Uhr)
Ohooo, was ist das? Ein Türknopf? Ausgezeichnet!
-
11.11.10 18:58 #3
@Splater:
Ich habe jetzt deinen Code nur überflogen, aber könnte man nicht schon im MySQL-Query überprüfen, ob das Feld "userpic" leer ist:
Code sql:1
SELECT userpic FROM TABLE WHERE userpic!=''
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
11.11.10 19:02 #4
Hallo Comfreek,
ja Definitiv kann man das auch tun. Hab ich jetzt nicht so schnell geschaltet
Danke für deine Verbesserung.
mfg splaterOhooo, was ist das? Ein Türknopf? Ausgezeichnet!
-
Hallo.

Erst einmal vielen Dank für die Antworten.
Leider komme ich gerade mit dem PHP-Code nicht klar.
Ich habe ihn mal versucht an meine Seite anzupassen aber der PHP-Code ergibt für mich keinen Sinn.
Um meine Idee etwas verständlicher zu erklären hier ein Beispiel:PHP-Code:$avatar = "http://www.meine.seite.de/avatare/";
$sql_pic = mysql_query("SELECT field5 FROM userfield")OR die (mysql_error());
while ($pic = mysql_fetch_array($sql_pic)) {
if(!empty($pic["field5"])) {
$pics[] = $pic["field5"];
}
}
$verz = opendir($avatar);
while ($file = readdir ($verz)) {
if(!empty($pics)) {
if($file != "rl" && $file != "." && $file != ".." && $file != "thumb") {
if(!in_array($file,$pics)){
@unlink("userpic/".$file);
}
}
}
}
Datenbank (Tabelle "userfield" Zeile "field2")
Verzeichniss (Avatare)PHP-Code:field2 = 123456
field2 = abcdef
field2 = aaaaa
field2 = 010101
Wie man sehen kann sind die letzten beiden Grafiken nicht mehr aktiv. Sprich: Sie werden von keinem User verwendet. Also sollen die gelöscht werden.PHP-Code:www.meine-seite.de/avatare/123456.png
www.meine-seite.de/avatare/abcdef.png
www.meine-seite.de/avatare/aaaaa.png
www.meine-seite.de/avatare/010101.png
www.meine-seite.de/avatare/bl5000.png
www.meine-seite.de/avatare/lollol.png
-
11.11.10 22:33 #6
Hallo, ja, genau das macht der Script an sich.
Kommt bei dir ein Fehler? wenn ja was. Versuch es mal ohne das @ vor unlink, dann kann man mit der Fehlermeldeung evt. etwas anfangen.PHP-Code:<?php
$avatar = "http://www.meine.seite.de/avatare";
$sql_pic = mysql_query("SELECT field5 FROM userfield")OR die (mysql_error());
while ($pic = mysql_fetch_array($sql_pic)) {
if(!empty($pic["field5"])) {
$pics[] = $pic["field5"]; ## Trage alle VORHANDENE Bilder ein.
}
}
$verz = opendir($avatar);
while ($file = readdir ($verz)) {
if(!empty($pics)) {
if($file != "rl" && $file != "." && $file != ".." && $file != "thumb") {
if(!in_array($file,$pics)){ ## Prüfe hier ob Bild NICHT! in Array ist -> Dann löschen
@unlink($avatar."/".$file);
}
}
}
}
mfg splaterOhooo, was ist das? Ein Türknopf? Ausgezeichnet!
-
Ich teste das PHP-Skript sofort aber ich glaube dann wird auch meine index.html und meine .htaccess-Datei mit gelöscht?
-
11.11.10 22:43 #8
Hi,
befinden die sich im selben Ordner? Mach vorher definitiv ein Backup davon.
Wenn nicht dann ->
sollte damit schon alles geregelt werden können.. hier trägst du alle Ordner und auch unterordner aus.. also ".." und "." somit ist gewähleistet das nur aus dem Aktuellen Ordner gelöscht wird, bzw auch nicht die Ordner die noch im jetzigen Ordner sind, musst du natürlich noch ergänzen.PHP-Code:if($file != "rl" && $file != "." && $file != ".." && $file != "thumb")
Wenn die im selben Ordner sind, kannst du nach der endung filtern.
Sprich .php .css etc aus der Suche entfallen. bsp.:
So stell ich mir das dann vor. Bitte Berichtigen wenn ich Falsch liegtPHP-Code:function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
$filename = stripslashes($file);
$extension = getExtension($filename);
$extension = strtolower($extension);
if (($extension == ".gif") && ($extension == ".png")){ ## jpg etc.
##Löschen
}else{
## Fehlermeldung oder soetwas :)
}

mfg splaterOhooo, was ist das? Ein Türknopf? Ausgezeichnet!
-
Ja sind im selben Ordner.
So?PHP-Code:if($file != "rl" && $file != "." && $file != ".." && $file != "thumb" && $file != "index" && $file != ".htaccess")
-
11.11.10 22:51 #10
Wenn es wirklich nur die beiden Datein sind, kann man es wohl so machen, dann aber genaue bezeichnung. Also
Bin mir nicht sicher ob die .htaccess nun auch wirklich aus der Bedingung ausgeschlossen ist.PHP-Code:if($file != "rl" && $file != "." && $file != ".." && $file != "thumb" && $file != "index.html" && $file != ".htaccess")
mfg splaterOhooo, was ist das? Ein Türknopf? Ausgezeichnet!
-
Es geht nicht aber ich weiss warum.

Die Avatare haben ja die Präfix "Avatar-XXX.png"
Das PHP-Skript muss doch wissen das vor dem Code "Avatar-" steht und dahinter ".png" oder? Kannst du mir sagen wo ich das ergänzen muss?
-
11.11.10 23:05 #12
Ist es generell "Avatar-$variable.png"?
Dann kannst du das im unlink festlegen, bzw schon in der Variable.
mfg splaterPHP-Code:@unlink($avatar."/Avatar-".$file.".png");
Ohooo, was ist das? Ein Türknopf? Ausgezeichnet!
-
Geht leider nicht.
Warnung: opendir(http://www.meine-seite.de/avatare) [function.opendir]: failed to open dir: not implemented in [path]/admin/deleteavatare.php (Zeile 50)
Warnung: readdir(): supplied argument is not a valid Directory resource in [path]/admin/deleteavatare.php (Zeile 51)
-
11.11.10 23:23 #14
opendir funktioniert aber nur auf lokalen Verzeichnissen oder FTP-Verzeichnissen.Also Lokal kannst du jetzt nicht mit "http:" Arbeiten.
mfg splaterOhooo, was ist das? Ein Türknopf? Ausgezeichnet!
-
Aber ich habe das Skript auf mein Webspace hochgeladen.
Ähnliche Themen
-
Mit include eingebundene Dateien zu bestimmter Zeit automatisch löschen
Von vernismou im Forum PHPAntworten: 4Letzter Beitrag: 01.09.09, 21:54 -
Automatisch löschen mit PS 3?
Von Alex363 im Forum PhotoshopAntworten: 4Letzter Beitrag: 17.02.09, 15:55 -
Dateien automatisch vom Server löschen
Von Cemil im Forum PHPAntworten: 3Letzter Beitrag: 14.05.06, 13:39 -
Automatisch löschen
Von PsychoGiga im Forum PHPAntworten: 20Letzter Beitrag: 02.11.04, 22:24 -
Dateien Automatisch Löschen mit PHP/Javascript
Von Spacejumper im Forum PHPAntworten: 3Letzter Beitrag: 04.09.04, 01:26



11Danke

Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren