2017-03-06 3 views
1

Im mit einem großen Open Source-Skript namens bulletproof ermöglicht Benutzern ein Profilbild hochladen.PHP Suchordner für Benutzer pic Set Standardbild, wenn nichts gefunden

Das Profilbild wird wie angegeben in einem Ordner gespeichert. Ich benutze keine mysql.

Ich möchte einen Standardbenutzer img anzeigen, wenn der Benutzer kein Profilbild hochgeladen hat.

Wenn er/sie ein Profilbild hochgeladen hat, wird das Standard-IMG offensichtlich auf das vom Benutzer hochgeladene Bild überschrieben.

Das Problem tritt auf, wie würde ich das Standardprofilbild anzeigen, wenn Benutzer nichts hochgeladen hat? Denken Sie daran, keine mysql zu verwenden.

Wenn ein Bild hochgeladen es den Namen der Benutzer-ID zugeordnet ist, wie so

<img src="imgs/users/1.png" style="width:100%" height="125px"> 

Würden Sie sagen, es ist der effizienteste Weg ist, den Ordner für ein Bild Spiel auf den Namen userID suchen?

Wenn etwas gefunden wird Display hochgeladen img else display default img? Oder sollte ich lieber eine Mysql-Route gehen?

Hoffe die Frage ist klar, wenn Sie weitere Informationen benötigen, lassen Sie mich bitte einen Kommentar unten. Jeder Rat und jede Hilfe wird geschätzt.

EDIT: das ist, was ich schließlich mit kam, wahrscheinlich nicht die effizienteste, aber macht den Job

function getProfilePic($userID){ 

     $filename ='imgs/users/'.$userID.'.png'; 
     if(file_exists($filename)){ 
      return $img = $userID.'png'; 
      exit(); 
     } 
     $filename='imgs/users/'.$userID.'.jpg'; 
     if(file_exists($filename)){ 
      return $img = $userID.'jpg'; 
      exit(); 
     } 
     else{ 
      return $img = 'default.jpg';  
      exit(); 
     } 
    } 

<img src="imgs/users/<?php echo getProfilePic($userID) ?>" style="width:100%" height="125px" /> 
+0

Setzen Sie einen Standardwert als '/ path/to/default/image.png' auf das Feld (eine Datenbank, eine Textdatei oder was auch immer), wo Sie Referenzen über Benutzerbilder halten. – marmeladze

+0

Haben Sie versucht, einen Code zu schreiben, der dies tun würde? – geeves

+0

@geeves ja, ich habe –

Antwort

3

können Sie verwenden: PHP file_exists() Funktion

Referenz https://www.w3schools.com/Php/func_filesystem_file_exists.asp

Oder diesen Code ändern :)

<?php 

function show_image($user_id){ 
    if(file_exists("imgs/users/$user_id.png")){ 
     return "<img src=\"imgs/users/$user_id.png\" style=\"width:100%\" height=\"125px\">"; 
    } 
    else{ 
     return "<img src=\"imgs/users/default.png\" style=\"width:100%\" height=\"125px\">"; 
    } 
} 

echo show_image(1); 
?> 
+0

Das hat eigentlich geklappt danke! –

1

Sie file_exists, wenn das Bild vorhanden ist zu prüfen, verwenden können, und dann das Standardbild verwenden, wenn diese zurückkehrt falsch.

+0

Hallo Netrilix danke für deine Antwort, ich habe meine Funktion wie folgt geändert, aber es gibt immer wieder den Standard zurück .... 'function getProfilePic ($ userID) { \t \t $ filename = 'imgs/users'. $ UserID. '.png '; \t if (file_exists ($ filename)) { \t \t Rückgabe $ img = $ userID; } \t else { \t \t zurück $ img = 'default'; \t \t} } ' –

+1

Sie haben Ihren Schrägstrich vergessen :) $ filename = 'imgs/users /'.$ userID.'. Png '; – sukalogika

+0

aaah hab es dank mate –

0

Zum Zeitpunkt der Bild-Upload, benutzer weise Bild machen . Bedeutet Bildname muss der Name des Benutzernamens oder der ID sein.

Zum Zeitpunkt der Bildanzeige setzen Sie eine if-Bedingung, um zu überprüfen, ob das angemeldete Benutzerbild mit seiner ID oder seinem Namen in file_exists existiert. Wenn nicht, dann lade das Standardbild.

Verwandte Themen