Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Редактирование файлов через субдомен


Автор: Geni 24.1.2010, 22:22
Проблема следующая:
есть сайт example.com и субдомен dom.example.com. dom.example.com защищён паролем через .htpasswd и .htaccess. Нужно через страницу dom.example.com/write.php редактировать файл на основном домене example.com/1.txt.
Пробовал стандартно:
Файл write.php:
Код

$handle = fopen("/var/www/vhosts/example.com/httpdocs/1.txt", "w");
fwrite($handle,"hello");
fclose($handle);

Не сработало. Пробовал "играться" с адресом в fopen - безрезультатно (например, выход "../../../httpdocs/1.txt").
Права выставлял на папку "httpdocs" (в которой находится файл 1.txt) 775 (пробовал и 777).

Также реализовал идею с вызовом скрипта другим скриптом. Т.е. скрипт на субдомене через комбинацию:
Код

$handle = fopen('http://example.com/script2.php', "rb");
$contents = stream_get_contents($handle);
fclose($handle);

вызывал скрипт на основном домене (script2.php), а тот в свою очередь выполнял необходимые мне опреации редактирования. Но есть большой минус - script2.php должен быть доступен только скрипту, а не всем желающим. Решение казалось бы банальным: в .htaccess прописать <files script2.php>deny from all</files>. Но тогда скрипт перестаёт быть доступным на вызов скриптом на субдомене.

Вопрос: как это можно реализовать без потерь в безопастности?

Автор: bars80080 24.1.2010, 23:28
Цитата(Geni @  24.1.2010,  21:22 Найти цитируемый пост)
есть сайт example.com и субдомен dom.example.com. dom.example.com

а они физически находятся на одном сервере?

Автор: Geni 24.1.2010, 23:50
Да

Автор: bars80080 24.1.2010, 23:56
а нельзя ли обойти все эти хитрые операции с промежуточными чтениями чужих серверов, и сразу подключить нужный файл прямо в код?

Автор: Geni 25.1.2010, 00:14
Цитата(bars80080 @  24.1.2010,  23:56 Найти цитируемый пост)
а нельзя ли обойти все эти хитрые операции с промежуточными чтениями чужих серверов, и сразу подключить нужный файл прямо в код?

Поясните, пожалуйста.

Мне нужно информацию, которую сгенерирует скрипт на субдомене отправить в txt-файл, который расположен на основном домене. У меня проблема заключается в том, что я не могу связаться с txt-файлом для записи.

Автор: brother79 25.1.2010, 06:57
Надо смотреть что разрешает хостинг. У нас например нету доступа к файлам за пределами своей папки из пхп, т.е. там есть в пхп один параметр, который задаёт разрешенные каталоги, к другим доступа нету. 

Автор: bars80080 25.1.2010, 11:10
Цитата(Geni @  24.1.2010,  23:14 Найти цитируемый пост)
Поясните, пожалуйста.

если можно из скрипта в домене дотянуться до скрипта в поддомене (у меня, к примеру, это можно), то надо работать именно на этом уровне. просто подкючая скрипт с помощью include. потому что вариант озвученный в первом посте заставляет раюотать через промежуточные сервера, что снижает скорость выполнения на порядки. да ещё и дополнительно нагружает ваш сервер


по поводу самого вопроса:
http://www.iho.ru/faq/manual/htaccess.html
Код

<Files my_secure_document.html>
Order Deny,Allow
Deny from all
Allow from 192.168.1.1
</Files>

Автор: Ипатьев 25.1.2010, 15:47
Перед тем, как назначать лечение, надо сначала узнать болезнь.
Если автор сможет сформулировать (а лучше - процитировать) какое-то более информативное сообщение об ошибке, чем слово "безрезультатно", то можно будет давать конкретные советы.

Автор: Geni 25.1.2010, 17:38
bars80080, спасибо за пояснения!
Вот это решение работает:
Код

<Files my_secure_document.html>
Order Deny,Allow
Deny from all
Allow from 192.168.1.1
</Files>

Вместо "my_secure_document.html" подставил имя скрипта на основном домене. Вместо "192.168.1.1" адрес своего сервера. Теперь скрипт на основном домене доступен только скрипту на субдомене (а также любому скрипту на моём сервере), в остальных случаях ошибка "403".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)