2013-12-14 3 views
0

У меня есть столбцы базы данных attach1 и attach2. Мне нужно показать файлы (pdf) из этих столбцов, но только если они существуют в каталоге www.domain.com/uploads. Attach1 содержит реальный файл но attach2 не делает.PHP, если файл существует, всегда показывает, что существует

Я пытался что-то вроде этого:

<?php 
$file = $row['attach']; 
$exists = file_exists('uploads/'.$file.''); 
if ($exists) { 
    echo $file; 
} 
if (!$exists) { 
    echo 'No file1'; 
}  
?> 

<?php 
$file2 = $row['attach2']; 
$exists = file_exists('uploads/'.$file2.''); 
if ($exists) { 
    echo $file2; 
} 
if (!$exists) { 
    echo 'No file2'; 
}  
?> 

Но каждый раз, когда он повторяет меня, что файл существует, даже если attach2 не содержит ничего. Зачем?

+0

Не к вашему вопросу, но в вашем примере кода есть несколько бессмысленных вещей. Вам не нужно конкатенировать строку ampty в конце имени файла. вам не нужно сохранять результат 'file_exists' в переменной. Вы можете использовать 'else', чтобы упростить ваши условные обозначения. –

+0

Вы пытались «echo $ file2» и убедиться, что он не пуст? Если это так, вы будете проверять 'file_exists ('/ uploads')', что, конечно, «TRUE». – Mureinik

+0

попробуйте это 'if (isset ($ file)' – Sandesh

ответ

2

Если ваше имя пуста, вы передаете только имя каталога file_exists. Каталоги также являются файлами. И я считаю, что каталог действительно существует. Это не лжет вам.

Вы можете либо проверить, что имя файла из базы данных не пусто, либо вы можете передать всю строку функции is_dir, чтобы узнать, является ли она каталогом. Предполагаю, что вам нужны только обычные файлы.

Это будет выглядеть примерно так:

<?php 
$file = $row['attach']; 
$exists = file_exists('uploads/'.$file.'') && !is_dir('uploads/'.$file.''); 
if ($exists) { 
    echo $file; 
} else { 
    echo 'No file1'; 
}  
?> 

Я изменил if заявление на использование else положения. Это эквивалентно использованию второго if, как и вы.

+0

Как мне это сделать? Пожалуйста, – user2957822

+0

Какая часть? 'is_dir'? –

+0

Да. is_dir .... – user2957822

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