Patrick: Mit formular hochgeladene bilder vom server löschen

Hallo \n\nwie kann ich Bilder die mit einem formular auf den server geladen wurden löschen bzw. verwalten. ich habe keine rechte über die bilder per ftp. wie kann ich die bilder demnächst andere rechte geben?

Mit freundlichen Grüssen,\nPatrick

  1. Hallo \n\nwie kann ich Bilder die mit einem formular auf den server geladen wurden löschen bzw. verwalten. ich habe keine rechte über die bilder per ftp. wie kann ich die bilder demnächst andere rechte geben?

    Mit freundlichen Grüssen,\nPatrick

    http://de3.php.net/chmod

    http://de3.php.net/unlink

    Sollte eigentlich deine Frage beantworten.

    Robi

    1. Hallo

      habe die rechte jetzt beim hochladen des bildes auf 0766 gesetzt. kann es aber immer noch nicht mit ws-ftp löschen oder verschieben ect.

      warum??

      Mit freundlichen Grüssen,
      Patrick

      1. hallo Patrick,

        habe die rechte jetzt beim hochladen des bildes auf 0766 gesetzt.

        Das muß nicht unbedingt bedeuten, daß sich tatsächlich was verändert hat. Die Rechte werden als Folge von drei Ziffern angegeben, aber nicht mit vier Ziffern  -  jedenfalls normalerweise (es gibt auch andere Wege, aber das führt hier wahrscheinlich zu weit).

        kann es aber immer noch nicht mit ws-ftp löschen oder verschieben ect.

        Hast du denn nichts anderes zur Verfügung als WS_FTP ?

        warum??

        Wie lange braucht dein Provider, um dir den Erfolg solcher Veränderungen zu zeigen? Bei home.t-online.de/username kann das bis zu zwei Stunden dauern

        Grüße aus Berlin

        Christoph S.

        1. Hallo

          also ich habe nur ws ftp weil ich damit sehr gut klar komme. was würdest du empfehlen?

          also ich veränderungen sofort sehen!

          mfg,
          Patrick

          1. nochmals hallo,

            also ich habe nur ws ftp weil ich damit sehr gut klar komme. was würdest du empfehlen?

            Wenn du damit tatsächlich gut klarkommst, kannst du gerne dabei bleiben, das Ding ist schon ganz ausgereift.

            Ich benutze meistens eins, das ich mir selber gebastelt habe. Du hast ja bei jedem Windows bereits ein "FTP-Programm" dabei. Probiers einfach mal aus, indem du an der Eingabeaufforderung den befehl "ftp" eingibst. Damit kann man auch weiterarbeiten und es beispielsweise in eine eigene kleine grafische Umgebung (ich benutze dazu TCL/Tk) einbinden.

            also ich veränderungen sofort sehen!

            Wie das meinen du eventuell?

            Grüße aus Berlin

            Christoph S.

            1. hallo,

              gibt es denn keine möglichkeit bilder per formular hochzuladen  die ich auch mit ws-ftp verwalten kann?

              also ich veränderungen sofort sehen!
              Wie das meinen du eventuell?

              sorry. batterien der funktastatur waren leer

              nochmal auf deutsch:
              also ich KANN veränderungen sofort sehen per ftp!

              mfg,
              Patrick

              1. hi,

                nochmal auf deutsch:
                also ich KANN veränderungen sofort sehen per ftp!

                Selbstverständlich zeigt dein FTP-Programm das an, dazu ist es ja da. Aber ob der Server beim Provider das auch sofort berücksichtig und online stellt, siehst du erst, wenn du mal die veränderten Dateien in einem Browser aufrufst. Und das _kann_ bei einigen Providern etwas dauern.
                Welchen Server benutzt denn dein Provider? Es gibt auch Provider, deren Servereinstellungen gar keine Veränderungen der Dateiredhte ztulassen. Allerdings sollte 766 _immer_ die Möglichkeit des Löschens/Verschiebens bereitstellen. Das ist ja gewissermaßen ein Standardwert.

                Was sagen denn deine WS_FTP-logs dazu? Wenn es irgendwelche Probleme gibt, steht das normalerweise da sehr genau drin.

                Gib doch einfach mal die Adresse eines solchen Bildes an, das du bereits mehrfach zu löschen versucht hast. Dann kann ich (im Browser) nachschauen, ob es denn existiert.

                Hast du denn noch andere Möglichkeiten des Zugriffs auf den Server  -  beispielsweise telnet oder SSH?

                Grüße aus Berlin

                Christoph S.

                1. Hallo,

                  das bild das ich hochlade wird dann im form direckt mit der webadresse in einer vorschau angezeigt und wir auch so im browser angezeigt. also echtzeit.

                  die fehlermeldung ist.
                  550 bild1.jpg: Permission denied // also zugriff verweigert???

                  die rechte stehen auf 766 für das bild und für den ordner 777. ordner und bilder werden mit php erstellt. jedes mitglied meiner seite bekommt einen ordner wo er 4 bilder speichern kann.

                  beim öffnen des formulars wird überprüft ob der ordner existiert mit der user id oder nicht. wenn nicht wird er erstellt mit 777. dann kann er in diesem ordner 4 bilder speichern.

                  aber ich kann per ws_ftp den ordner und die bilder nicht löschen. habs auch schon über http://www2ftp.de versucht. geht auch nicht.

                  habe leider kein telnet oder ssh

                  mfg,
                  Patrick

                  1. Hallo,

                    hier kommt Hilfe!

                    Bitte lege folgende PHP-Datei an:

                    <?php

                    // rekursives löschen eines Verzeichnisses
                    function rec_rmdir($dir)
                    {
                      if (is_dir($dir)) {
                        $dirhandle = opendir($dir);
                        while ($entry = readdir($dirhandle)) {
                          if ($entry != '.' && $entry != '..') {
                            if (is_dir($dir.'/'.$entry)) {
                              rec_rmdir($dir.'/'.$entry);
                            }
                            else {
                              @unlink($dir.'/'.$entry);
                            }
                          }
                        }
                        if (@rmdir($dir)) {
                          return true;
                        }
                      }
                    }

                    if (rec_rmdir("data"))
                      echo "Erfolg!";
                    else
                      echo "Fehler!";
                    ?>

                    Speichere Diese Datei nun in den Pfad, wo das Verzeichsnis mit den Bildern liegt und führe diese aus. ACHTUNG: Alle Dateien werden jetzt im Ordner gelöscht! Bitte Vorher unbedingt Sicherheitskopie machen!

                    Gruß
                    Harald

                    Hallo,

                    das bild das ich hochlade wird dann im form direckt mit der webadresse in einer vorschau angezeigt und wir auch so im browser angezeigt. also echtzeit.

                    die fehlermeldung ist.
                    550 bild1.jpg: Permission denied // also zugriff verweigert???

                    die rechte stehen auf 766 für das bild und für den ordner 777. ordner und bilder werden mit php erstellt. jedes mitglied meiner seite bekommt einen ordner wo er 4 bilder speichern kann.

                    beim öffnen des formulars wird überprüft ob der ordner existiert mit der user id oder nicht. wenn nicht wird er erstellt mit 777. dann kann er in diesem ordner 4 bilder speichern.

                    aber ich kann per ws_ftp den ordner und die bilder nicht löschen. habs auch schon über http://www2ftp.de versucht. geht auch nicht.

                    habe leider kein telnet oder ssh

                    mfg,
                    Patrick

                    1. Hallo,

                      die usr haben ihren eigenen benutzerbereich.

                      möchte die bilder nur verwalten können damit ich wenn mal jemand ein bild hochläd was nicht erlaubt ist ich es dann auch löschen kann per ftp.

                      mfg,
                      Patrick

                  2. hallo Patrick,

                    also, so langsam artet das ja richtig in Arbeit aus.

                    das bild das ich hochlade wird dann im form direckt mit der webadresse in einer vorschau angezeigt und wir auch so im browser angezeigt. also echtzeit.

                    Das ganze Problem ist, daß du den Dateiupload mit PHP machst und danach mit einem FTP-Programm die hochgeladene Datei, also dein Bild, zu löschen/verschieben versuchst. Irgendwas machen also dein PHP-Script und dein FTP-Programm anders. Und was sie "anders" machen, mußt du herausfinden.
                    Lade doch einfach mal dasselbe Bild mit deinem FTP-Programm an dieselbe Stelle hoch und schau nach, ob du es dann mit PHP wieder löschen kannst und überprüfe, ob das "Löschen" überhaupt mit PHP funktioniert.

                    Im übrigen hättest du wirklich eine _echte_ Adresse angeben sollen, worum ich dich gebeteen hatte.

                    die fehlermeldung ist.
                    550 bild1.jpg: Permission denied // also zugriff verweigert???

                    Richtig, das ist eine Zugriffsverweigerung. Aber sie dürfte dem Verzeichnis gelten, und nicht dem einzelnen Bild. Hast du dasselbe Problem mit bild63.jpg im selben Verzeichnis?

                    die rechte stehen auf 766 für das bild und für den ordner 777

                    Das ist völlig in Ordnung so.

                    ordner und bilder werden mit php erstellt. jedes mitglied meiner seite bekommt einen ordner wo er 4 bilder speichern kann.

                    Und das _könnte_ ein Problem sein. Was heißt hier "jedes Mitglied"? Haben diese Mitglieder denn auch die Rechte, die du als Seitenbesitzer hast? Hast du deinen Upload als Mitglied oder als Domainbesitzer gemacht?

                    beim öffnen des formulars wird überprüft ob der ordner existiert mit der user id oder nicht.

                    Solange du keine Adresse angibst, muß ich raten. Ich kenne dein Formular nicht, ich kenne deinen Code nicht, ich habe dein Bild nicht gesehen. Wenn ich  -  oder ein anderer Helfer  -  genauer werden soll, mußt du genauere Angaben zum Verhandlungsgegenstand machen.

                    Christoph S.

                    1. so jetzt der code:

                      <?php
                      session_start();

                      if (!session_is_registered('user'))
                      {
                      header("Location: ../meldungen.inc.php?inaktiv_m=yes");
                      }
                      include("../../db.inc.php");
                      $link = mysql_connect( "localhost", $benutzer, $passwort  );
                      if ( ! $link )
                       die( "Keine Verbindung zur Datenbank" );
                      mysql_select_db( $db, $link )
                       or die ( "Konnte Datenbank "$db" nicht öffnen: ".mysql_error() );
                       $ergebnis = mysql_query ("SELECT * FROM $tabelle_m WHERE user = '$user'");
                       $datensatz = mysql_fetch_array( $ergebnis );

                      if ($pruefen) {
                       if (file_exists("../../images/models/$datensatz[geschlecht]$datensatz[model_id]/bild1.jpg") AND
                        file_exists("../../images/models/$datensatz[geschlecht]$datensatz[model_id]/bild2.jpg") ) {
                         //alles OK
                       header("Location: administration.php");
                       } else {
                        $nachricht = "Du musst mindestens auf position 1 und 2 Bilder hochgeladen haben!";
                         }
                      }

                      $zeit = time(); // Aktuelle Zeit in Sekunden
                         $datum = getdate();
                       $a_datum = $datum[mday];
                       $a_datum.= ".";
                       $a_datum.= $datum[mon];
                       $a_datum.= ".";
                       $a_datum.= $datum[year];

                      if ($nr == "1") {
                      $bild = "bild1.jpg";
                      }
                      if ($nr == "2") {
                      $bild = "bild2.jpg";
                      }
                      if ($nr == "3") {
                      $bild = "bild3.jpg";
                      }
                      if ($nr == "4") {
                      $bild = "bild4.jpg";
                      }

                      //Überprüfen ob der Ordner existiert
                      if(is_dir("../../images/models/$datensatz[geschlecht]$datensatz[model_id]")) {
                         //Ordner existiert schon
                      }
                      else {  //Ordner wird erstellt
                      mkdir( "../../images/models/$datensatz[geschlecht]$datensatz[model_id]", 0777 );
                      }
                      //Ende

                      ////Bild Löschen////
                      if ($loeschen) {
                       unlink("../../images/models/$datensatz[geschlecht]$datensatz[model_id]/$bild");
                      mysql_query ("UPDATE $tabelle_m SET ip='$REMOTE_ADDR', a_datum='$a_datum' WHERE user='$user'");
                      }
                      /////Ende/////

                      //Hochladen
                      if (isset($_FILES['foto']) and ! $_FILES['foto']['error']) {
                        if ($_FILES['foto']['size'] < 46080) {
                         if ($_FILES['foto']['type'] == "image/pjpeg") {
                       move_uploaded_file($_FILES['foto']['tmp_name'], "../../images/models/$datensatz[geschlecht]$datensatz[model_id]/$bild");
                       chmod ("../../images/models/$datensatz[geschlecht]$datensatz[model_id]/$bild", 0766);
                       mysql_query ("UPDATE $tabelle_m SET ip='$REMOTE_ADDR', a_datum='$a_datum' WHERE user='$user'");

                      } else {
                        $nachricht = "Das Bild, das du Hochladen möchtest ist kein <b>jpg</b> Bild. Es werden nur Bilder vom Typ *.jpg angenommen";
                         }
                        } else {
                        $nachricht = "Das Bild ist zu groß. Maximale Größe pro Bild: <b>45KB</b>";
                          }
                      }
                      /////Ende/////
                      ?>

                      Ja ich habe den upload als mitglied gemacht. ich habe mich selbst auf meiner seite angmeldet um alles zu testen was ich programmiere.

                      mfg,
                      Patrick

                      1. Hallo,

                        der ordner der erstellt wird sollte ja nach dem script 777 haben oder? im ws-ftp wird 755 angezeigt aber die bilder haben wirklich 766.

                        mfg,
                        Patrick

                      2. hallo Patrick,

                        Genau das hättest du mal gleich machen sollen, nämlich deinen PHP-Code zugänglich machen. Wenn ich ihn richtig lese, liegt der Fehler hier:

                        $link = mysql_connect( "localhost", $benutzer, $passwort  );

                        Das heißt, deine Bilder werden in eine MySQL-Datenbank geladen. Darauf hast du selbstverständlich mit deinem FTP-Programm keinerlei Zugriff. Wenn du etwas löschen/verschieben willst, mußt du das dann auch über PHP oder eine andere Zugriffsmöglichkeit auf deine Datenbank machen. FTP scheidet aus.

                        Christoph S.

                        1. Hallo,

                          nein die bilder werden aufm server gespeichert. die datenbank wird nur geöffnet um das aktuelle datum zu speichern. damit der user sehen kann wann das mitglied seine daten/bilder aktualisiert hat.

                          mfg,
                          patrick

                          1. seufz ...

                            und warum habe ich immer noch keine Adresse irgendeines deiner Bilder, warum weiß ich immer noch nicht, was in deinen WS_FTP-logs drinsteht?

                            Ganz abgesehen davon ist der "localhost" in der vorhin von mir zitierten Codezeile höchst fragwürdig, und ob du deine Variablen im PHP-Script $datensatz nennen mußt, solltest du vielleicht auch überlegen.

                            Ich werde mal versuchen, dein Script zu testen. Auf jeden Fall solltest du auch die Zeile, in der du jetzt für "chmod" 0766 befiehlst, zurückkorrigieren, bzw. ganz streichen, du brauchst so eine Zeile eigentlich gar nicht.

                            Das Problem ist, wie bereits gesagt, daß dein Script etwas anders macht als dein FTP-Programm. Und du mußt nun herausfinden, was das ist.

                            Normalerweise bietet dir ein Provider, der dir PHP erlaubt, auch die Möglichkeit, in die Server-Logs Einblick zu nehmen. Was sagen denn die Server-Protokolldateien zu deinen Löshversuchen?

                            Christoph S.

                            1. melde dich einfach bei mir an.

                              wenn du was findest was nicht sicher wär teile es mir bitte mit.

                              http://www.models-planet.de/index.php

                              also ich muss sagen das ist mein erstes project mit php. ich bin anfänger wie du bestimmt schon bemerkt hast. es gibt bestimmt einige sachen in meine scripten die man besser machen kann aber wenn das script dann lief so wie ich es wollte war ich erstmal zufrieden.

                              die Server_logs müssten doch aufm server sein in einem ordner oder? also auf meinem server sind keine.

                              wenn ich den ordner mit den bildern drin löschen möchte:
                              PWD
                              257 "/images/models" is current directory.
                              CWD w1
                              250 CWD command successful.
                              PWD
                              257 "/images/models/w1" is current directory.
                              PORT 192,168,1,2,14,238
                              200 PORT command successful.
                              LIST -al
                              150 Opening ASCII mode data connection for file list.
                              Übertragen 375 Byte in < 0.001 Sekunden, 2929.688 Kbps ( 366.211 KBps).
                              DELE bild1.jpg
                              550 bild1.jpg: Permission denied
                              CWD /images/models
                              250 CWD command successful.
                              RMD w1
                              550 w1: Directory not empty
                              XRMD w1
                              550 w1: Directory not empty

                              wenn ich ein bild löschen möchte:
                              DELE bild1.jpg
                              550 bild1.jpg: Permission denied

                              dies sagt ws-ftp

                              mfg,
                              patrick

                              1. hi,

                                melde dich einfach bei mir an.

                                Ich werde mich hüten. Du verlangst Benutzernme/Name/mail-Adresse, aber ich bin weder Fotograf noch Model.

                                http://www.models-planet.de/index.php

                                Ein link wird hier im Forum so angegeben:
                                http://www.models-planet.de/index.php

                                also ich muss sagen das ist mein erstes project mit php. ich bin anfänger wie du bestimmt schon bemerkt hast.

                                Ja, na und? Jeder hat irgedwann und irgndwomit mal angefangen und ist dabei auch prompt auf die Nase gefallen.

                                die Server_logs müssten doch aufm server sein in einem ordner oder?

                                Natürlich. Und welcher Ornder das ist, teilt dir dein Provider spätestens auf Anfrage mit.

                                also auf meinem server sind keine.

                                Wiebitte? Was heißt jetzt "auf meinem", hast du auch noch lokal einen FTP-Server laufen?

                                wenn ich den ordner mit den bildern drin löschen möchte:

                                Dann stehen die Meldungen, die du nun nach mehrfacher Nachfrage hergeschrieben hast, in welcher Datei? WS_FTP legt mehrere unterschiedliche Protokolldateien an, mit verschiedenen Namen.

                                PORT 192,168,1,2,14,238

                                Sehr dubios. Bist du sicher, daß dein WS_FTP wirklich korrekt konfiguriert ist?

                                LIST -al
                                150 Opening ASCII mode data connection for file list.
                                Übertragen 375 Byte in < 0.001 Sekunden, 2929.688 Kbps ( 366.211 KBps).

                                Du weißt natürlich, wofür die 375 Byte stehen?

                                DELE bild1.jpg
                                550 bild1.jpg: Permission denied

                                Klar, die Datei existiert ja nicht, es existiert lediglich eine Information, daß es sie geben sollte

                                CWD /images/models
                                250 CWD command successful.
                                RMD w1
                                550 w1: Directory not empty

                                Du kannst in WS_FTP einstellen, daß du ein Verzeichnis auch dann löschen darfst, wenn es nicht leer ist.

                                dies sagt ws-ftp

                                Nein. Dies sagt eines deiner logs. Aber welches? Und wie sind deine log-Anzeigen konfiguriert? Du kommst doch mit WS_FTP gut klar ...

                                Im übrigen mache ich jetzt für heute morgen Schluß, und auch du solltest besser langsam schlafen gehen. Es hilft manchmal, sich an einem neuen anderen Tag mit frischen Kräften auf eine Problemlösung zu stürzen.

                                Christoph S.

                                1. Hallo

                                  Ich werde mich hüten. Du verlangst Benutzernme/Name/mail-Adresse, aber ich bin weder Fotograf noch Model.

                                  Ist doch egal ist ja nur zum test. kannst ja spaß daten eingeben. kannst dich im adminbereich auch wieder löschen aus der db.

                                  Ein link wird hier im Forum so angegeben:
                                  http://www.models-planet.de/index.php

                                  beim nächsten mal

                                  Wiebitte? Was heißt jetzt "auf meinem", hast du auch noch lokal einen FTP-Server laufen?

                                  nein, ist nicht meiner! sag das halt nur so. (http://www.united-host.de)

                                  Dann stehen die Meldungen, die du nun nach mehrfacher Nachfrage hergeschrieben hast, in welcher Datei? WS_FTP legt mehrere unterschiedliche Protokolldateien an, mit verschiedenen Namen.

                                  WS_FTP hat doch unten so ein status feld. habs daraus kopiert

                                  Sehr dubios. Bist du sicher, daß dein WS_FTP wirklich korrekt konfiguriert ist?

                                  dachte ich bis jetzt

                                  Du weißt natürlich, wofür die 375 Byte stehen?

                                  nein!

                                  Klar, die Datei existiert ja nicht, es existiert lediglich eine Information, daß es sie geben sollte

                                  die bilder werden aber in der vorschau und in den sedcard angezeigt. auch bei anderen die sich die sedcards angucken!

                                  Du kannst in WS_FTP einstellen, daß du ein Verzeichnis auch dann löschen darfst, wenn es nicht leer ist.

                                  habe ich!

                                  Nein. Dies sagt eines deiner logs. Aber welches? Und wie sind deine log-Anzeigen konfiguriert? Du kommst doch mit WS_FTP gut klar ...

                                  ja halt das status feld unten bei ws ftp. müsste die standart konfiguration sein der logs. hab da nie was dran gemacht

                                  Im übrigen mache ich jetzt für heute morgen Schluß, und auch du solltest besser langsam schlafen gehen. Es hilft manchmal, sich an einem neuen anderen Tag mit frischen Kräften auf eine Problemlösung zu stürzen.

                                  ok. danke schonmal. hoffe du wirst mir noch weiterhelfen!

                                  Mit freundlichen Grüssen,
                                  Patrick