Seite 5 von 5
Verfasst: 14.12.2006 22:21
von Miriam
Na, ich habe die Scripte ein wenig umgeschrieben, weil die Datei im Upload-Verzeichnis nicht als Datei erkannt werden konnte....
Die Scripte sollten aber auch auf jedem anderen Server laufen. Falls nicht, tausche einfach die usercp_register.php und user_avatar.php aus.
Verfasst: 15.12.2006 10:30
von Christian_W
Miriam hat geschrieben:Na, ich habe die Scripte ein wenig umgeschrieben
Verrätst Du auch noch wie? Damit Andere die evtl. das selbe Problem haben, dieses Thema auch hilft.
Gruß Christian
Verfasst: 15.12.2006 13:28
von Miriam
Na klar, warum nicht? Ihr wollt ja nur was zum Lachen haben.
Wenn die Ideen aus dem Artikel KB:avatar_upload nicht weiterhelfen, könnte dieser Umstand in der nachfolgenden Art geklärt werden.
Problematik: Der Upload von Bildern auf dem User-PC als Avatar im Profil ist nicht möglich und bricht mit einer Fehlermeldung ab, dass das Bild nicht im richtigen Format sei.
Hintergrund: Der Server lädt die mit einem Formular hochgeladenen Bilder zwar in sein temp. Upload-Verzeichnis, gibt der temp. Datei aber keinen regulären Dateinamen.
Beispiel: /phptmp/
phpZgf8z anstatt /phptmp/
phpZgf8z.tmp
Somit kann das phpBB Script nicht erkennen, welcher Art die hochgeladene Datei ist.
getimagesize($HTTP_POST_FILES['avatar']['tmp_name']) gibt keine verwertbaren Daten heraus, da die temp. Datei als Verzeichnis erkannt wird.
Workarount: Die temp. hochgeladene Datei wird in das temp. Avavatar Verzeichnis des phpBB verschoben und die Notation der Datei auf ein verwertbares Format gebracht. Danach wird die Datei unter neuem Namen in das reguläre Avatar-Verzeichnis kopiert und das Original gelöscht. Der neue Name wird in die DB eingetragen und das Avatar ist für den User eingestellt.
Umbau der Scripts:
- #-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
$user_avatar_upload = ( !empty($HTTP_POST_VARS['avatarurl']) ) ? trim($HTTP_POST_VARS['avatarurl']) : ( ( $HTTP_POST_FILES['avatar']['tmp_name'] != "none") ? $HTTP_POST_FILES['avatar']['tmp_name'] : '' );
#
#-----[ BEFORE, ADD ]------------------------------------------
#
$tmpdir = ini_get("upload_tmp_dir");
move_uploaded_file($HTTP_POST_FILES['avatar']['tmp_name'], './' . $board_config['avatar_path'] . str_replace($tmpdir, '/tmp/', $HTTP_POST_FILES['avatar']['tmp_name']) . '.tmp');
$HTTP_POST_FILES['avatar']['tmp_name'] = './' . $board_config['avatar_path'] . str_replace($tmpdir, '/tmp/', $HTTP_POST_FILES['avatar']['tmp_name']) . '.tmp';
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_avatar.php
#
#-----[ FIND ]------------------------------------------
#
if (!is_uploaded_file($avatar_filename))
{
message_die(GENERAL_ERROR, 'Unable to upload file', '', __LINE__, __FILE__);
}
$move_file($avatar_filename, './' . $board_config['avatar_path'] . "/$new_filename");
#
#-----[ REPLACE WITH ]------------------------------------------
#
@chmod($avatar_filename, 0777);
@copy($avatar_filename, './' . $board_config['avatar_path'] . "/$new_filename");
@unlink($avatar_filename);
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Die Umsetzung ist vllt. programmiertechnisch nicht ganz so clever gelöst....
Änderungen sind gern willkommen.
Fehler
Verfasst: 25.01.2007 13:23
von shog
Hallo,
nachdem ich diese Änderungen übernommen habe, funktioniert der Avatar Upload, auf meinem Server hatte ich dasslebe Problem mit den Dateiendungen im tmp Directory.
Problem jetzt:
Sobald irgendein Profil geändert wird, und KEINE datei zum hochladen angegeben wird, kommt die fehlermeldung "avater muss im jpg, gif" blabla vorliegen... beim neu registrieren auch, da kann man ja nichtmals ein avatar auswählen...
Wie kann ich das wohl beheben?
danke
Verfasst: 25.01.2007 14:14
von shog
OK ich habs folgendermaßen gelöst, vor dem geänderten Part eine Abfrage einbauen, ob die uploadete datei vorhanden ist... Der erste Teil des Umbauskriptes müsste dh. lauten:
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
$user_avatar_upload = ( !empty($HTTP_POST_VARS['avatarurl']) ) ? trim($HTTP_POST_VARS['avatarurl']) : ( ( $HTTP_POST_FILES['avatar']['tmp_name'] != "none") ? $HTTP_POST_FILES['avatar']['tmp_name'] : '' );
#
#-----[ BEFORE, ADD ]------------------------------------------
#
if(is_uploaded_file($HTTP_POST_FILES['avatar']['tmp_name'])==true)
{
$tmpdir = ini_get("upload_tmp_dir");
move_uploaded_file($HTTP_POST_FILES['avatar']['tmp_name'], './' . $board_config['avatar_path'] . str_replace($tmpdir, '/tmp/', $HTTP_POST_FILES['avatar']['tmp_name']) . '.tmp');
$HTTP_POST_FILES['avatar']['tmp_name'] = './' . $board_config['avatar_path'] . str_replace($tmpdir, '/tmp/', $HTTP_POST_FILES['avatar']['tmp_name']) . '.tmp';
}
#
#
#
Ansonten war der Tipp super, danke!