如果image已经存在,则显示另一张图片


PHP: if image exists show image else show different image

我正在制作一个注册登录系统和PHP中的个人资料页面,我正在努力使个人资料图片工作。

如果用户还没有上传头像,那么让它显示一个"没有头像"的图像,如果用户上传了头像,那么让它显示他上传的图像。

现在只显示默认的图片,noprofile.png

< img src="uploads/< ? echo "$username" ? >/noprofile.png">

如果icon.png已经上传,我想显示icon.png,如果还没有上传,让它显示noprofile.png

通过逻辑运行它,使用file_exists:

$image="/path/on/local/server/to/image/icon.png";
$http_image="http://whatever.com/url/to/image";
if(file_exists($image))
{
  echo "<img src='"$http_image'"/>'n";
}
else
{
  echo "<img src='"uploads/$username/noprofile.png'"/>'n";
} 

使用file exists查看文件是否已上传。如果文件存在,则使用该url,否则使用默认的noprofile.png。

您可以在DB中创建一个列来存储一个值,无论该值是否已上传。

可以查看文件是否存在

<?php
if (file_exists('uploads/' . $username . '/icon.png')) {
echo '<img src="uploads/' . $username . '/icon.png">';
}
else {
echo '<img src="uploads/' . $username . '/noprofile.png">';
}
?>
<?php
$img = file_exists(sprintf('/path/to/uploads/%s/icon.png', $username))
     ? 'icon.png' : 'noprofile.png';
?>
<img src="uploads/<?php printf('%s/%s', htmlspecialchars($username), $img) ?>">

您可以使用http://us3.php.net/file_exists检查图像文件是否在那里。

另一种选择是—假设您将用户信息保存在数据库中—使用包含图像名称的列。因为无论如何都必须从用户表中检索信息,所以要检查该列是否为NULL或空白。如果是,用户还没有上传图片。

然后,在显示用户照片的页面中,可以编写如下代码:

$userPhoto = ($photoName)? $photoName : 'placeholder';
echo '<img src="uploads/'.$userPhoto.'.png" />

假设文件路径是正确的,下面是您要做的…

<?php $filename = "uploads/".$username;    
$imgSrc = file_exists($filename) ? $filename : "uploads/noprofile.png"; ?>
<img src=<?php echo $imgSrc?>

在img标签中使用onerror属性

<img onerror="this.src= 'img/No_image_available.png';"  src="<?php echo $row['column_name '];  ?>" />