2017-06-09 1 views
1
<img src="uploads/<?php echo $_SESSION['username']; ?>.jpg" class="img-circle" width="60" <b class="hidden-xs"> 

Ich bekomme ein User Image der Link ist uploads/admin.jpg oder auch uploads/?php echo $_SESSION['username'];?>.jpg.Gibt es eine Möglichkeit, mehrere Image Extensions in einem Link zu erhalten?

Wenn sie ein .png hochladen, wie bekomme ich es, wo es die richtige Erweiterung für das Bild wählen wird, also, wenn es ein png anstelle eines JPGs wäre, würde es das png Bild anstelle des JPG laden? gibt es einen Weg?

Antwort

0

Sie haben Optionen.

1) Sie können Bilder, die Sie hochgeladen haben, vorverarbeiten (möglicherweise unter Verwendung von ImageMagick), um sie auf das gewünschte Format zu zwingen, bevor Sie die Datei auf Ihrem Server speichern. Dies ist wahrscheinlich die beste Lösung.

2) Sie können den Namen der hochgeladenen Datei akzeptieren und in Ihrer Datenbank speichern. Statt also:

"uploads/<?php echo $_SESSION['username']; ?>.jpg"

würden Sie so etwas wie verwenden:

"uploads/<?php echo $_SESSION['userimagefilename']; ?>"

Das Problem bei dieser Lösung ist Vertrauen. Benutzer senden Ihnen möglicherweise keinen Dateinamen, der den Inhalt der Datei ehrlich darstellt.

3) Eine andere Lösung ist exif_imagetype() zu verwenden. Dies akzeptiert ein Bild, sieht sich den Inhalt der Datei an und sagt Ihnen, um welchen Bildtyp es sich handelt (oder nicht, im Falle von schändlichen Benutzern). Kombiniert mit image_type_to_mime_type() haben Sie die Möglichkeit, das Bild als Inline-HTML-Bild zu streamen und zu vergessen, was das Suffix ist. Dies ist besonders praktisch, wenn Sie Bilder in Ihrer Datenbank speichern und nicht als Dateien auf der Festplatte. Dies ist ein Problem, wenn Sie versuchen, viele Bilder zu speichern.

4) Eine endgültige Lösung ist, wenn-dann durch eine Reihe von file_exists() -Anweisungen. Sie müssen jedoch mindestens drei überprüfen und ein Dutzend Dateiformate testen. Das sind 1-12 Datenträgertreffer pro Bild. Es ist eine teure Lösung und schützt Sie trotzdem nicht davor, dass jemand eine Datei hochlädt, die nicht das ist, was er vorgibt, oder eine Datei hochlädt, die nicht als Bild gerendert werden kann (zB .PDF, .DOC, .RTF, etc.) .). Es ist meine am wenigsten bevorzugte Lösung.

+0

Ich werde wahrscheinlich machen, wo Benutzer nur JPG-Dateien als ihre Profilbilder hochladen können. – BigFella

+0

Eine gute, einfache Lösung. Ich würde einen schnellen Test mit exif_imagetype() empfehlen, um sicher zu gehen, dass es wirklich ein JPG ist. Es ist ein kostengünstiger One-Line-Test, der Sie vor Narren und Schwerverbrechern schützt. Prost! – JBH

+0

werde ich! Danke! – BigFella

0
if (file_exists('http://www.example.com/upload/'.$_SESSION['username'].'jpg')) 
{ 
    $src = $_SESSION['username'].'jpg'; 
} 
else 
{ 
    $src = $_SESSION['username'].'png'; 
} 

<img src="<?php echo $src; ?>" class="img-circle" width="60" <b class="hidden-xs"> 
Verwandte Themen