2013-11-24 2 views
-1

Я хочу, чтобы иметь возможность представить фотографию пользователя. Этот пользователь может быть типа «Доктор», «Медсестра» или «Пациент», и каждый человек, принадлежащий к каждому из этих типов, имеет отдельный идентификатор, который идентифицирует его. У меня есть фотографии каждого типа пользователей, разделенных в трех папках внутри каталога/images/user_upload /, и у данного пользователя может быть или не быть фотографии. Если у него есть фотография, я хочу представить фотографию с именем, которое совпадает с его идентификатором (обратите внимание, что я не знаю расширения этого файла, только имя). Если он не хочет показывать изображение по умолчанию. Для этой цели у меня есть функция printUserPhoto.Получение каталога файла без знания его расширения

function printUserPhoto() 
{ 
    $path = '/images/user_upload/' .ucfirst($_SESSION['listtype']). '/' .$_SESSION['id']. '.*'; 
    $source = glob($path); 
    if(empty($source)) 
     echo '<img src="images/default_profile_img.png" />'; 
    else 
     echo '<img src="',$source[0],'" />'; 
} 

Хотя, я всегда получаю пустой массив в переменном $ source, хотя изображение существует. Что я делаю не так?

+1

'glob' работает на уровне файловой системы сервера. Вы просите его искать путь, начинающийся с корня. '/ images', скорее всего, не существует – Phil

+0

Вы можете проверить, что' is_dir ('/ images/user_upload /' .ucfirst ($ _ SESSION ['listtype']) 'TRUE? У вас есть абсолютный путь, но я предполагаю он должен быть относительным. – jszobody

ответ

0

Таким образом, с Glob

function printUserPhoto() 
{ 
    $pathToDocumentRoot = $_SERVER['DOCUMENT_ROOT']; 
    $path = $pathToDocumentRoot . '/images/user_upload/' .ucfirst($_SESSION['listtype']). '/' .$_SESSION['id']. '.*'; 
    $source = glob($path); 
    if(empty($source)){ 
     echo '<img src="images/default_profile_img.png" />'; 
    } else { 
     echo '<img src="',$source[0],'" />'; 
    } 
} 

Возможно ограничить пользователь может загружать типы файлов. При том, что вы могли бы сделать что-то вроде этого:

function printUserPhoto() 
{ 
    $pathToDocumentRoot = $_SERVER['DOCUMENT_ROOT']; 
    $path = $pathToDocumentRoot . '/images/user_upload/' .ucfirst($_SESSION['listtype']). '/' .$_SESSION['id']; 
    $file = "images/default_profile_img.png"; 
    if(file_exists($path . '.jpg')){ 
     $file = $path . '.jpg'; 
    }else if(file_exists($path . '.png')){ 
     $file = $path . '.png'; 
    }else if(file_exists($path . '.gif')){ 
     $file = $path . '.gif'; 
    } 
    echo '<img src="' . $file . '" />'; 

} 

Кроме того, как было сказано на @Phil вы теперь со ссылкой на корневой файловой системы/быть абсолютный путь не по отношению к корневой документ.

Смежные вопросы