Вызов сценария PHP для получения URL-адресов изображений - PullRequest
0 голосов
/ 24 апреля 2011

Мой путь такой

/ сайт / PHP
/ Сайт / JavaScript
/website/photographer/index.html
/ сайт / фотограф / фотографии

У меня есть JavaScript, который отображает фотогалерею для фотографий в папке. Используя ajax с jquery, он вызывает файл PHP, который возвращает URL-адреса изображений в «фотографиях», чтобы JavaScript мог настроить галерею и т. Д.

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

Метод, который я разработал, состоял в том, чтобы отправить "window.location.pathname" в вызове get ajax, чтобы php мог получить каталог, в котором находится текущая страница, а затем просто выполнить поиск в папке "photos" в этом каталоге.

chdir($_GET["currentPath"] . "photos"); //change the directory so we just get the file names
echo json_encode(glob("*.jpg"));

Я получаю эту ошибку: Предупреждение: chdir () [function.chdir]: такого файла или каталога (errno 2) нет в /hermes/bosweb/web054/b541/ipg.danielechevarriacom/testing/oneonethousand_test/php/images.php в строке 4 []

А когда я

echo $_GET["currentPath"] . "photos";

Он печатает: "/ testing / oneonethousand_test / steele / photos"

Это правильный каталог, где находятся фотографии, поэтому я не знаю, почему это не работает. Я предполагаю, что это связано с тем, как работает chdir.

Я не хочу делать chdir ("../ steele / photos"), потому что у меня будет много каталогов, и я хочу, чтобы файл PHP оставался общим. Я просто хочу, чтобы javascript мог сказать php, где находится текущий каталог, а затем PHP переключается на этот каталог. Почему это не работает?

Спасибо.

Ответы [ 4 ]

0 голосов
/ 24 апреля 2011

Вы можете использовать curl в php для вызова ("http://danielechevarria.com/testing/ oneonethousand_test / steele / photos")

0 голосов
/ 24 апреля 2011

chdir требует путь к файловой системе, а не путь http.

На основании вывода команды echo похоже, что он передает весь URL-адрес http ("http://danielechevarria.com/testing/oneonethousand_test/steele/photos") в функцию chdir.

0 голосов
/ 24 апреля 2011

Я считаю, что chdir работает только с локальными, а не с веб-путями. Итак, чтобы «chdir» в каталог с фотографиями, вам нужен полный системный путь.

т.е. / home / user / public_html / photos или C: \ www \ photos

http://us2.php.net/chdir

Вот мой вклад: не знаю, почему вы используете ajax и javascript для извлечения изображений и создания галереи. Почему бы просто не использовать PHP для создания галереи? Javascript более усложняет это.

0 голосов
/ 24 апреля 2011

Прежде всего, НИКОГДА не доверяйте переменным в $ _GET / $ _ POST / etc. Используя ваш скрипт, я мог бы потенциально перечислить файл в любом каталоге на сервере (включая не доступные через Интернет), а не только те, которые вам нужны.

Это не работает, потому что путь в $ _GET ["currentPath"] - это URL, а не имя папки: для него установлено "http://danielechevarria.com/testing/oneonethousand_test/steele/" вместо" steele ".

Измените переменную, отправляемую JavaScript, просто на путь верхнего уровня (например, "steele") и рассмотрите возможность изменения своего скрипта примерно так:

//Validate the path somehow, in this case, reject anything that's not alphanumeric
if(!preg_match("/^\w+$/", $_GET["currentPath"])) die("{'error':'Invalid path'}");
chdir("../" . $_GET["currentPath"] . "/photos");
echo json_encode(glob("*.jpg"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...