2011-02-04 5 views
2

У меня есть сценарий, который отображает изображения на основе определенных условий. Когда ни одно из условий не выполняется, я хочу случайным образом отобразить одно из стандартных (резервных) изображений. Эти другие изображения находятся на удаленном сервере. Я прочитал, что вы не можете читать каталог на удаленном сервере, что имеет смысл.Параметры для чтения удаленного каталога

Является ли это лучшим выбором для размещения файла в каталоге изображений удаленного сервера, который выводит все имена файлов изображений, чтобы я мог анализировать его с помощью другого сервера? Есть ли более простой способ?

Я предпочитаю не использовать FTP (http://php.net/manual/en/book.ftp.php).

Каковы мои возможности в основном просто получить имена изображений в этой папке?

Спасибо, Райан

UPDATE:

@mario's answer легкий и работает как шарм. Это именно то решение, которое, как я думал, я хотел, но, подумав об этом еще немного, и прочитав, что даже @mario сделает это по-другому, я решил пойти с @bensiu's answer, потому что для меня контроль и безопасность важнее удобства. С помощью метода @ mario очень сложно узнать, есть ли у вас данные (отсутствие контроля), и вы подвергаете свою директорию/некоторую информацию о сервере (безопасность). Предложение @ bensiu включает в себя второй файл (неудобство), но обеспечивает контроль и безопасность, в которые я в конечном итоге решаю!

Благодарим вас обоих!

-Ryan

ответ

1

Я надеюсь, что вы по крайней мере, иметь доступ к удаленному серверу ...

Вы можете поместить туда скрипт «А», который будет выполнять работу на местном уровне, возвращаемый список изображений в формате (преимущественном исходный текст, JSON, XML ...), и этот скрипт будет удаленно вызываться с помощью curl form your server ....

Также разумно убедиться, что, когда вы вызываете скрипт «A», вы, по крайней мере, передаете некоторые секретный ключ для предотвращения неаронизированного доступа (не идеальное решение, но может быть достаточным)

+0

Это определенно звучит как сплошной подход. Я хотел попытаться сохранить удаленный сервер как можно более невостребованным, потому что я никогда не знаю, с какими удаленными серверами я буду иметь дело в будущем, но ваш подход по-прежнему может быть лучшим из того, что я видел до сих пор. – NightHawk

0

если у вас есть PHP5 и HTTP поток обертку включен на сервере, это очень легко и просто скопировать его в локальный файл:

copy('http://somedomain.com/file.jpeg', '/tmp/file.jpeg'); 

екоторые хосты отключить от копирования() функции, то вы можете сделать свой собственный -

<?php 
    function copyemz($file1,$file2){ 
      $contentx [email protected]_get_contents($file1); 
        $openedfile = fopen($file2, "w"); 
        fwrite($openedfile, $contentx); 
        fclose($openedfile); 
        if ($contentx === FALSE) { 
        $status=false; 
        }else $status=true; 

        return $status; 
    } 
?> 
+0

Я под впечатлением, что он просит список изображений - не справляясь с изображением ... – bensiu

+0

В конечном итоге он хочет их отобразить.«Когда ни одно из условий не выполняется, я хочу случайным образом отобразить одно из стандартных (резервных) изображений». это есть вопрос. – ayush

+0

для отображения вам не нужно копировать - ссылка enougth – bensiu

2

Я предпочел бы точный и специальный сценарий обработчика, как отметил @bensiu.

Но альтернативой было бы прочитать список каталогов. Для Apache, сгенерированного списком mod_index, будет достаточно для:

$html = file_get_contents("http://example.com/images/"); 
preg_match_all('/<a href="([-\w\d.]+\.(jpeg|png|gif))"/', $html, $uu); 
$files = $uu[1]; 
+0

hmmm ... вы уверены, что получите список файлов, не имеющих значения по умолчанию в этой папке? – bensiu

+0

Я пробовал это, и это не сработало для меня :( – NightHawk

+0

@bensiu: Очевидно, вам нужно избавиться от любого заглушки или пустого index.html, и если списки каталогов отключены, это тоже не работает. Можно было настроить его в неясном месте, но тогда проще было бы установить простой скрипт '>. – mario

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