Bilddatei mit Hilfe von PHP verschieben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufgetreten code
code
datei
fehler
fehlermeldung
file
funktion
genaue fehlermeldung
http
image
nachname
nehmen
ordner
registrierung
server
string
vorherigen formular
vorname
weglassen
wiederholen
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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!\"); }
-
<?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 hatte ich das am Anfang auch gehabt, aber das wollte auch nicht. Na ja, ich versuche es einfach noch mal ... kann ja nicht schaden ;)
-
Mach am besten mal das @ vor dem copy() weg. Dann bekommst du die Fehlermeldung. Ein @ vor einer Funktion unterdrückt diese Fehlermeldung.
-
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.
-
äääh ich hab meine wahrsageglaskugel verloren, kannst du mir deine leihen???
Ich kenn weder die variablen die du abspeicherst noch die genaue fehlermeldung -.- -
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.
-
<?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? -
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
-
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?
-
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*. -
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. -
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 -
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[]. -
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. -
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. -
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
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage