Fehler bei Avatarupload

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag 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.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Christian_W
Ehemaliges Teammitglied
Beiträge: 5703
Registriert: 26.02.2004 00:09

Beitrag 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
---
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag 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.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
shog
Mitglied
Beiträge: 24
Registriert: 21.01.2007 10:50

Fehler

Beitrag 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
shog
Mitglied
Beiträge: 24
Registriert: 21.01.2007 10:50

Beitrag 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!
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“