PHP включает помощь - PullRequest
       1

PHP включает помощь

1 голос
/ 10 марта 2011

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

По сути, это структура файла:

/public_html/include_handle.php  

/protected_site/index.html
               /images/image.jpg  

Если я включу index.html с помощью обычного оператора include, image.jpg, очевидно, не будет отображаться в браузере, потому что онпубличный / относительный каталог.Если не считать какого-то тяжелого анализа preg_match / replace, как я могу получить изображение для отображения на странице include_handle.php при включении index.html?Я также хотел бы иметь возможность переходить по ссылкам на другие страницы со страницы index.html.Я знаю, что могу использовать iframes и помещать статические страницы в публичный каталог, но я не хочу этого по разным причинам.Любая помощь будет принята с благодарностью, спасибо!

Ответы [ 3 ]

2 голосов
/ 10 марта 2011

Вы можете установить псевдоним Apache для создания «виртуального» каталога на вашем общедоступном сайте:

Alias /images /protected_site/images

После чего любые /images/ URL-адреса на общедоступных веб-страницах будут внутренне перенаправлены в каталог изображений защищенного сайта. Стоимость заключается в том, что это предоставляет часть дерева документов защищенного сайта, поэтому вам следует быть осторожным с тем, что вы положили в этот каталог изображений.

1 голос
/ 10 марта 2011

Вы можете использовать HTML-тег base , чтобы ваша страница работала так, как если бы она находилась в другом каталоге (или хосте).Относительные ссылки будут разрешены с использованием этого значения в качестве текущего документа.

Я думаю, protected_site недоступен из Интернета.Вам понадобится PHP-скрипт для чтения файлов из защищенного каталога и отправки их пользователю.Это будет выглядеть примерно так:

getimage.php?image=image.jpg

Если вы не хотите изменять содержимое index.html и по-прежнему ссылаться на изображения как something.jpg вместо вышеупомянутого, вы можете использовать mod_rewrite на сервереside:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?\.(jpg|gif|png))$ getimage.php?image=$1 [L]

Таким образом apache будет вызывать ваш PHP для любых файлов изображений, которых нет в общедоступном каталоге.

1 голос
/ 10 марта 2011

Первое решение: Поместите изображения в общую папку, чтобы браузер мог получить к ней доступ, ссылки в .html должны быть относительно / public_html

Второе решение: обслуживать ваши защищенные изображения с помощью php-скрипта (необходимо выполнитьисправьте заголовки для браузера и используйте readfile, например, для передачи данных изображения) пример для jpg:

header("Content-Type: image/jpeg"); 
readfile("/protected_site/images/image.jpg");

Ссылка на изображение будет выглядеть так:

image.php?id=image.jpg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...