Bild upload
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
code
eintrag
email
falsch mache
feld
file
ftp
funktion
http
idee
kleine update
log
ordner
profil
server
set
testen
url
vergeben
windows
-
Hallo Zusammen,
Ich richte gerade eine kleine Update Funktion für Profilbilder ein.
Jedoch wird das File nicht in den Ordner gespeichert. Habt ihr eine Idee was ich falsch mache?
1234567891011121314151617181920212223242526272829303132333435363738394041if
(isset(
$_POST
[
'update_profilepicture'
])){
function
random_string(
$length
){
$chars
=
'1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
;
$random_string
=
''
;
$number_chars
=
strlen
(
$chars
);
for
(
$i
=0;
$i
<
$length
;
$i
++)
{
$random_string
.=
$chars
[mt_rand(0,
$number_chars
- 1)];
}
return
$random_string
;
}
$filename_old
=
$_FILES
[
'file'
][
'name'
];
$filename_old
=
explode
(
'.'
,
$filename_old
);
$filename_old
=
array_reverse
(
$filename_old
);
$file_type
=
$filename_old
[0];
$filename_new
= random_string(5) .
"."
.
$file_type
;
$complete_filename
=
"/profileimages/"
.
$filename_new
;
move_uploaded_file(
$_FILES
[
'file'
][
'tmp_name'
],
'/profileimages/'
.
$filename_new
);
$check_profile_image
=
$db
->query(
"SELECT profile_image FROM users WHERE email='$session_info'"
);
$check_profile_image_array
=
$check_profile_image
->fetch_array();
if
(
file_exists
(
$check_profile_image_array
[
'profile_image'
])){
unlink(
$check_profile_image_array
[
'profile_image'
]);
}
$db
->query(
"UPDATE users SET profile_image='$complete_filename' WHERE email='$session_info'"
);
$profile_picture_error
=
"<div class=\"alert_success\">Your profile picture was updated.</div>"
;
}
Der neue Name wird allerdings richtig in die Datenbank eingetragen.
Hier noch das Formular dazu:
1234567891011121314151617181920<
div
class
=
"row"
>
<
section
id
=
"settings_container"
>
<
h1
>Profile picture:</
h1
>
<
div
class
=
"row"
>
<
div
class
=
"6u wmfg_layout_1"
>
<
ul
class
=
"wmfg_questions"
>
<
form
method
=
"post"
enctype
=
"multipart/form-data"
accept
=
"image"
action
=
"/settings.php"
>
<
li
class
=
"wmfg_q"
>
<
input
class
=
"wmfg_btn"
type
=
"file"
name
=
"file"
value
=
"Browse..."
>
</
li
>
<
li
class
=
"wmfg_q"
>
<
input
type
=
"submit"
class
=
"wmfg_btn"
name
=
"update_profilepicture"
id
=
"update_profilepicture"
value
=
"Update profile picture"
/>
</
li
>
</
form
>
</
ul
>
</
div
>
</
div
>
</
section
>
</
div
>
Kurz noch nebenbei irgendwie funktioniert die accept Funktion nicht, wie stelle ich es ein das nur png,jpg und jpeg erlaubt werden?
Liebe Grüße
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hey,
solch einen Fehler hatte ich vor kurzem auch. Gib deinen Profilbildordner per FTP Schreibrechte, dann sollte es gehen :)
PS: Schreibe dein move_uploaded_file($_FILES['file']['tmp_name'], '/profileimages/' . $filename_new); in eine If-Abfrage, um auch sicher zu gehen, dass dein Bild ordnungsgemäß hochgeladen und gespeichert wurde, bevor du einen DB-Eintrag schreibst ;)
MFG MIcha -
Huhu!
Wie gebe ich dem Ordner den Schreibrechte, bei Notepad++ geht das glaubich nicht :)
LG -
Lass mich raten, zum testen benutzt du XAMPP auf deinem Windows-PC? Oder wie testest du deine Scripts?
Hier mal ein Tutorial um Alle Rechte zu vergeben (bei Windows)
http://www.pa-s.de/php/tutorial-CHMOD-Rechte-in-Windows-vergeben-13.php -
Ich teste direkt auf lima :)
-
Gerade ausprobiert, funktioniert aber nicht :(
LG -
eine Idee habe ich noch ...
move_uploaded_file($_FILES['file']['tmp_name'], '/profileimages/' . $filename_new);
entferne das erste Slash-Zeichen ...
move_uploaded_file($_FILES['file']['tmp_name'], 'profileimages/' . $filename_new);
PS: Kontrolliere doch den Dateityp mit deiner $file_type-Variable
Beitrag zuletzt geändert: 6.9.2014 20:39:43 von michaelkoepke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage