kostenloser Webspace werbefrei: lima-city


Bilddatei mit Hilfe von PHP verschieben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    vrw

    vrw hat kostenlosen Webspace.

    Hallo!

    Ist es möglich, mit Hilfe von PHP eine Bild-Datei von einem Ordner in einen anderen zu verschieben?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    Ja, ist es. Und zwar mit den Funktionen copy() und unlink():

    1. mit copy() die Datei kopieren
    http://www.selfphp.de/funktionsreferenz/dateisystem_funktionen/copy.php

    2. mit unlink() die alte Datei löschen
    http://www.selfphp.de/funktionsreferenz/dateisystem_funktionen/unlink.php
  4. Autor dieses Themas

    vrw

    vrw hat kostenlosen Webspace.

    Ich habe hierzu jetzt noch eine Frage:

    Und zwar sind die Ordner, aus denen herauskopiert wird sowie die jeweilige Datei immer verschieden. Doch sobald ich Variablen einfüge, funktioniert das ganze nicht mehr.

    Mein Script sieht derzeit wie folgt aus:

    $datei=\'\"images/\" . $ordner \"/\". $avatar \';
                        if ( @copy($datei, \'../../\' . $vorname \'_\' . $nachname \'/\' . $datei))
                        {
                          print(\"Registrierung abgeschlossen!\");
                        }
                        else
                        {
                          print(\"Es ist ein Fehler aufgetreten!\");
                        }

  5. <?php
    $datei= \'images/\'.$ordner.\'/\'.$avatar;
    if (@copy($datei, \'../../\'.$vorname \'_\'.$nachname \'/\'.$datei)) {
      print(\"Registrierung abgeschlossen!\");
    } else {
      print(\"Es ist ein Fehler aufgetreten!\");
    }
    ?>

    Du solltest noch einmal wiederholen, wie man Variablen in einen String einsetzt... ^^
    Mit \' werden nämlich sämtliche Variablen in dem String ignoriert. Da müsstest du schon \" nehmen, was allerdings auch überflüssig ist. Einfach weglassen (siehe oben).
  6. Autor dieses Themas

    vrw

    vrw hat kostenlosen Webspace.

    So hatte ich das am Anfang auch gehabt, aber das wollte auch nicht. Na ja, ich versuche es einfach noch mal ... kann ja nicht schaden ;)
  7. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    Mach am besten mal das @ vor dem copy() weg. Dann bekommst du die Fehlermeldung. Ein @ vor einer Funktion unterdrückt diese Fehlermeldung.
  8. Autor dieses Themas

    vrw

    vrw hat kostenlosen Webspace.

    Okay, dadurch dass ich nun also dieses @ weggenommen habe, kam folgende Fehlermeldung heraus, mit der ich auch nicht allzuviel anfangen kann. Ich kann nur sagen, dass der Ordner nicht nur \"Mirja\", sondern \"Mirja_Drechsler\" heißen soll. Und warum setzt der mir da ein \"input type\" hin? Da blicke ich nicht so ganz durch, erscheint mir wirr.
  9. äääh ich hab meine wahrsageglaskugel verloren, kannst du mir deine leihen???

    Ich kenn weder die variablen die du abspeicherst noch die genaue fehlermeldung -.-
  10. Autor dieses Themas

    vrw

    vrw hat kostenlosen Webspace.

    Aber das steht doch alles schon hier ... was genau verstehst du daran nicht? Die genaue Fehlermeldung habe ich zum Schluss gepostet und die Variablen stehen in dem Scriptteil. Diese werden mittels eines vorhergehenden Formulars in die Datei gebracht.

  11. <?php
    $datei= \'images/\'.$ordner.\'/\'.$avatar;
    if (@copy($datei, \'../../\'.$vorname \'_\'.$nachname \'/\'.$datei)) {
      print(\"Registrierung abgeschlossen!\");
    } else {
      print(\"Es ist ein Fehler aufgetreten!\");
    }
    ?>

    Du solltest noch einmal wiederholen, wie man Variablen in einen String einsetzt... ^^
    Mit \' werden nämlich sämtliche Variablen in dem String ignoriert. Da müsstest du schon \" nehmen, was allerdings auch überflüssig ist. Einfach weglassen (siehe oben).

    So ganz stimmt das aber auch nicht^^
    Ich würde vorschlagen:
    <?php
    $datei= \'images/\'.$ordner.\'/\'.$avatar;
    if (@copy($datei, \'../../\'.$vorname.\'_\'.$nachname.\'/\'.$datei)) {
      print(\"Registrierung abgeschlossen!\");
    } else {
      print(\"Es ist ein Fehler aufgetreten!\");
    }
    ?>

    @vrw
    Eine Fehlermeldung kann ich leider auch nicht entdecken, was spuckt copy() denn aus?
  12. Autor dieses Themas

    vrw

    vrw hat kostenlosen Webspace.

    Sorry, hab die Fehlermeldung vergessen, einzufügen. Hier nun aber:

    Warning: copy() [function.copy]: open_basedir restriction in effect. File(../../Aurora><input type=_/images/n-avatar-w/einzug.gif) is not within the allowed path(s): (/tmp:/var/tmp:/home/webpages/include/:/home/webpages/tmp:/home/webpages/lima-city/vrw/html) in /home/webpages/lima-city/vrw/html/avatar.php on line 37

    Warning: copy(../../Aurora><input type=_/images/n-avatar-w/einzug.gif) [function.copy]: failed to open stream: Operation not permitted in /home/webpages/lima-city/vrw/html/avatar.php on line 37

  13. Der String, den du als Dateinamen übergibst, siehst sehr seltsam aus. Es hat eher den Anschein, als würde da ein Teil des input-Feldes mit drinne stecken. Sicher, dass das so stimmt?
  14. Autor dieses Themas

    vrw

    vrw hat kostenlosen Webspace.

    Und genau das ist es ja, was mich so wundert. Ich habe nicht die leiseste Ahnung, woher dieses input-type-zeugs kommt.

    Soll ich vielleicht einfach mal das gesamte Script posten? Vielleicht hilft es dann ja etwas weiter, an die Lösung des Problems zu kommen *seufz*.

  15. Und genau das ist es ja, was mich so wundert. Ich habe nicht die leiseste Ahnung, woher dieses input-type-zeugs kommt.

    Soll ich vielleicht einfach mal das gesamte Script posten? Vielleicht hilft es dann ja etwas weiter, an die Lösung des Problems zu kommen *seufz*.

    Ja posts einfach mal.

    PS.: Sry, wegen dem Kurzposting. :angel:
  16. Autor dieses Themas

    vrw

    vrw hat kostenlosen Webspace.

    Okay, das ist das Script, welches das Bild verschieben soll:

    <?php
                      $ordner=$HTTP_POST_VARS[\'ordner\'];
                      $vorname=$HTTP_POST_VARS[\'vorname\'];
                      $nachname=$HTTP_POST_VARS[\'nachname\'];
                      $avatar=$HTTP_POST_VARS[\'avatar\'];
                      $db=mysql_connect(\"mysql.lima-city.de\",\"tralala\",\"trullala\")
                        or die(\"Kein Connect zum Datenbankserver\");
                      mysql_select_db(\"db_106726_2\")
                        or die(\"Datenbank konnte nicht angesprochen werden.\");
                      $anfrage=\"INSERT INTO user VALUES (\'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\";
                      $anfrage.=$avatar;
                      $anfrage.=\"\')\";
                      mysql_query($anfrage)
                        or die(\"Hat nicht geklappt!\");
                        $datei=\'images/\'.$ordner.\'/\'.$avatar;
                        if ( copy($datei, \'../../\' .$vorname.\'_\'.$nachname.\'/\'.$datei))
                        {
                          print(\"Registrierung abgeschlossen!\");
                        }
                        else
                        {
                          print(\"Es ist ein Fehler aufgetreten!\");
                        }
    
                    ?>



    Beitrag geändert: 28.3.2008 16:45:27 von vrw
  17. Ersetze HTTP_POST_VARS mal durch $_POST[\'...\'], das ist besser. Außerdem solltest du deine Datenbankdaten ändern, die muss ja nicht jeder sehen.
    Befindet sich die Datei schon auf dem Server, oder wird die erst hochgeladen? Weil du dann auch ein entsprechendes Formular dafür brauchst und mit $_FILES[][] darauf zugraifen musst und nicht über $_POST[].
  18. Autor dieses Themas

    vrw

    vrw hat kostenlosen Webspace.

    Hopla, stimmt ... dass die Daten drinstehen, hab ich völlig verpeilt. Ja, die Datei befindet sich bereits auf dem Server. Ich stelle mir das so vor:

    Sämtliche Avatare liegen entweder im Ordner n_avatar_w (für weibliche Avatare) oder im Ordner n_avatar_m (für männliche Avatare). Das vom User ausgewähte Avatar soll dann in den Ordner des jeweiligen Users platziert werden. Beispielsweise: Aurora_Nightfire oder Michelle_Drechsler etc. Diese Ordner werden mit einem vorherigen Formular erstellt.
  19. Also der Quelltext sieht soweit in Ordnung aus (wie gesagt, ersetze mal HTTP_POST_VARS noch).
    Um auf die Fehlermeldung zurück zu kommen:

    Warning: copy() [function.copy]: open_basedir restriction in effect. File(../../Aurora><input type=_/images/n-avatar-w/einzug.gif) is not within the allowed path(s): (/tmp:/var/tmp:/home/webpages/include/:/home/webpages/tmp:/home/webpages/lima-city/vrw/html) in /home/webpages/lima-city/vrw/html/avatar.php on line 37

    Das Script liegt direkt im Ordner html, also quasi im Hauptverzeichnis. Du versuchst aber den Avatar zwei Ebenen höher zu kopieren, was der Server verständlicher weise nicht zu lässt. Ich vermute mal, dass du die Pfadangaben ausgehend von der Bilddatei geschrieben hast, du musst sie aber in Bezug zum Script setzen. Probiere mal das copy($datei, \'../../\' .$vorname.\'_\'.$nachname.\'/\'.$datei) durch das zu ersetzen:
    <?
    copy($datei, $vorname.\'_\'.$nachname.\'/\'.$datei)
    ?>

    Ein weiteres kleines Problem ist wahrscheinlich, dass $datei einen kompletten Pfad enthält(\'images/\'.$ordner.\'/\'.$avatar), und du das dann hinter $vorname.\'_\'.$nachname.\'/\' hängst. Ich weiß nicht, ob das so gewollt ist, aber es kommt mir seltsam vor.
  20. Autor dieses Themas

    vrw

    vrw hat kostenlosen Webspace.

    Ohje, natürlich ... klar, dann kann das nicht gehen ... tja, ich sags ja, minikleine Fehler machen ein riesengroßes Chaos ... also noch mal probieren und schauen, ob das alles war ... ich denke und hoffe schon ;) ... danke
  21. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!