[PHP] Benutzeravatare ermöglichen mit PHP/MySQL

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Firefox User, 9. August 2010 .

  1. 9. August 2010
    Benutzeravatare ermöglichen mit PHP/MySQL

    Ich habe es jetzt meinen Usern ermöglicht, Avatare hochzuladen (auf meine Seite). Um zu verhindern, dass ein User 2 Avatare hat, benutze ich den Code:
    Spoiler
    PHP:
              if( file_exists ( "avatars/ $_SESSION [ id ] .jpg" )) { 
                  
    unlink ( "avatars/ $_SESSION [ id ] .jpg" ); } 
                  
             if(
    file_exists ( "avatars/ $_SESSION [ id ] .gif" )) { 
                  
    unlink ( "avatars/ $_SESSION [ id ] .gif" ); }     
                        
             if(
    file_exists ( "avatars/ $_SESSION [ id ] .png" )) { 
                  
    unlink ( "avatars/ $_SESSION [ id ] .png" ); }  


    Aber geht das nicht einfacher? Die Avatare werden immer so abgespeichert: die id des users.jpg oder png oder gif

    Etwas anders als jpg oder png oder gif als Endung gibt es nicht.
     
  2. 9. August 2010
    AW: Avatare von Usern

    falscher ansatz. Wo werden den die userdaten abgelegt?
    Dann kann ich dir bestimmt weiterhelfen
     
  3. 9. August 2010
    AW: Avatare von Usern

    naja könntest mal testen, ob eine fehlermeldung kommt, wenn man unlink auf einfach auf eine datei ausführt.

    könntest aber zumindest, statt 3 if's - else ifs und else verwenden, weil es ja deiner aussage nach eh nur 1 bild gibt, dass entweder .gif, .png oder .jpg ist.

    andere möglichkeit:
    regulare ausdrücke - der den ersten teil prüft und den letzten teil auf jpg/gif/png --> und dann einfach unlinken und ersetzen
     
  4. 9. August 2010
    AW: Avatare von Usern

    mit falschen ansatz meinte ich, dass die sessions nicht dazu gedacht sind. sessions sind sitzungs-daten dh. diese werden später wieder gelöscht. nach deinen ansatz sieht nur der jenige das avatar, falls der eingeloggt ist. die anderen sehen das ja nicht, den es ist nur seine session.

    ein ansatz könnte so aussehen:
    user-tabelle in mysql
    - benutzer_id
    - benutzer_name
    - benutzer_mail
    - benutzer_pass
    - benutzer_avatar (varchar50 von mir aus)

    falls der user sich gerade registriert haben sollte, trägst du ihn ein default-avatar oder gar nichts. dann aktiviert er sein account u.s.w loggt sich ein und hat die möglichkeit ein avatar hochzuladen. diese sollte geprüft werden und evtl umbennant in benutzer_name.(gif|jpg|png).

    benutzer_name.* weil der benutzername sollte ja einmallig sein, nicht doppelt vorhanden.

    falls der benutzer ein neues avatar uploaded prüfst du ob er schon eins hat -> wenn ja dann das alte löschen und das neue uploaded+updaten in der datenbank

    ähm und vergiss reguläre ausdrücke, sind genug php-funktionen vorhanden um mit strings zu arbeiten
     
  5. 9. August 2010
    AW: Avatare von Usern

    Hä?

    Beim hochladen wird das Bild unter folgendem Dateinamen gespeichert: benutzer_id.(gif|jpg|png), je nachdem welches Format das Bild hat.

    Und wenn der gleiche Benutzer wieder einen Avatar uploadet, soll der alte gelöscht werden. Und zum löschen benutzte ich bis jetzt immer den Code, der im Anfangspost steht. Und jetzt will ich wissen ob man den Code nicht kürzen bzw. vereinfachen kann.
     
  6. 9. August 2010
    AW: Avatare von Usern


    Wieso das? Du siehst ja nicht wie er das ganze verarbeitet, wo User die Avatare sehen müssen.
    Es könnte ja auch sein, dass der User die Session_ID als Userid benutzt und in einer Session speichert. Somit auch für die Grafik und alles andere. Wenn er die GrafikID trotzdem dann in der DB speichert ist es ja kein Problem. Bei dem Löschen kann er das mit der Session ja dann machen weil er sich vllt eine DB-Abfrage ersparen möchte. Also ganz unmöglich ist das nicht, jedoch geht es viel einfacher und besser wie du schon richtig beschrieben hast.


    Edit:// Was du da genau verleichtern willst weiß ich jetzt nicht genau gibt es nicht viel zu machen. Jedenfalls mit deiner Vorgehensweise wie dein Script arbeitet. Du könntest natürlich für jeden User ein Ordner im Ordner Avatare machen und bei jedem erfolgreichem Upload den Ordnerinhalt leeren.
     
  7. 9. August 2010
    AW: Avatare von Usern

    dann hätte ich ja 100000 Ordner..

    könnte man nicht prüfen ob ein bild mit den dateinamen = userid besteht?
    und das dann löschen?
     
  8. 10. August 2010
    AW: Avatare von Usern


    Und wo ist das Problem? Ich glaub nicht, dass SVZ ect. ein Ordner "userbilder" hat wo dann die drei Bilder von jedem User drin sind.. Genauso wie die Fotoalben. Da willst du dann via FTP den Bilderordner öffnen und dir schmiert erstmal alles ab, weil er 3Mio Bilder nicht auflisten kann...

    if(file_exists("avatars/$_SESSION[id].jpg")) {
    Wenn Datei (avatare/Sessionid.jpg) existiert,
    unlink("avatars/$_SESSION[id].jpg"); }
    lösche avates/sessionid.jpg


    Was anderes machst du da doch nicht? Ich versteh gerade nicht was du machen möchtest bzw. dadran verändern möchtest. Schreib dir halt ne Session beim login die den Bildernamen komplett speichert, dann musst du nur eine Abfrage machen wenn du nichts am Script ändern willst oder es unbedingt einfacher haben möchtest.
     
  9. 10. August 2010
    AW: Avatare von Usern

    wo liegt das problem? Prüfe es doch einfach mit file_exists.

    Ein ordner reicht den jede benutzer ist doch einmalig vorhanden. Also reicht es id bzw name als bilddatei.

    Post dein script und erkläre etwas genauer, wie und was funktionieren soll. Mir kommt es so vor, als du nur diese paar zeilen geschrieben bzw kopiert hast...
     
  10. 10. August 2010
    AW: Avatare von Usern

    hi,

    warum nicht gleich anders machen
    mysql: owner,avatarak,maxava,server,update
    owner = besitzer id
    avatarak = 0 oder 1 -> ob hochgeladen oder nicht
    maxava = wie viele avatare der benutzer haben darf
    server = falls mehr upload server im einsatz wo liegt das foto / pfad
    update = wann hat der user was neues hochgeschoben

    So lässt sich dann einfach prüfen mit einer simplen sql abfrage, ob avatar 0 oder 1 also deaktiviert oder aktiviert ist.

    Update: Wird der user gelöscht oder gesperrt so wird via php einfach der sql ansatz gekillt und aus die maus!
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.