2013-08-28 2 views
-1

Я уже видел this question, но это не сработало для меня.PHP - Проверьте, существует ли файл, не зная расширения

Что мне нужно сделать, так это проверить, существует ли файл на PHP, не зная расширения. Я использую этот код:

<?php 
if (count(glob("/database/".$_REQUEST['thetitle'].".*")) == 0) { 
echo 'true'; 
} else { 
echo 'false'; 
} 
?> 

EDIT: Может быть, это уместным сказать, что сценарий находится в

[root]/functions/validatefilename.php 

и база данных в

[root]/database/ 

Но он всегда возвращает ложь, независимо от того, что имя файла ($_REQUEST['thetitle']) есть.

+0

Я сомневаюсь, что ваш файл находится в '/ базы данных/...' , Это корень * диска! * – deceze

+0

Правильно, я забыл. В HTML '/ database /' будет папкой в ​​корне моего домена. Как вы это сделаете в PHP? – Isaiah

+1

* URL-адреса * в HTML относятся к текущему/корневому * URL *, * локальные пути к файлам * относятся к тому, где файлы находятся на диске/в корне диска. PHP действительно не заботится о URL-адресах. URL-адреса не имеют ничего общего с локальными файловыми путями и наоборот. – deceze

ответ

2

попробовать:

count(glob("./database/".$_REQUEST['thetitle'].".*")) 
+0

Все еще не работает – Isaiah

+0

count (glob ("../ database /".$_ REQUEST ['thetitle'].". * ")) –

+0

и вы уверены, что у вас есть права на папку с базой данных? [http://www.php.net/glob](http://www.php.net/glob) –

1

кажется мне, как это работает хорошо, за исключением, что вы должны указать полный путь:

if (count(glob("/path/to/" . "database/" .$_REQUEST['thetitle']. ".*")) == 0) { 
+0

Поскольку мой отредактированный вопрос теперь иллюстрирует,/database/is напрямую после root, например website.com/database/ – Isaiah

+0

, вам все равно может понадобиться явно отобразить весь путь – XaxD

+0

Я пробовал '$ thevar = glob (" http://www.daltonempire.nl/database/Hello.* ") ; echo '' '; print_r ($ thevar); echo' ''; 'и я поставил файл с именем« Hello.png »там, но он все равно будет эхом», – Isaiah