К списку форумов К списку вопросов
Возникла трабла с инклудом
Хлам
16.03.2004 - 08:50
Возникла вот такая вот проблемка. Подключаю удаленный файл (указываю http:// и дальше), а в подключаемом файле не видна переменная, которая определена в подключающем файле. Щас, не торопитесь, пример:
//index.php
<?
$x = "Бла-бла";
inсludе("http://localhost/temp/conf.php");
?>
//conf.php
echo "Переменная". $x;
На выходе имеем просто Переменная. Это так и задумано или какая тонкость все-таки присутствует? Или даже по другому вопрос, как использовать работу удаленного пхп-скрипта, с какими-то параметрами (что-то типа inсludе("x.php?a=1&b=2"))
Mips
1 - 16.03.2004 - 09:01
чё хитришь-то? зачем тебе это?
скопируй себе conf.php и юзай на здоровье
Хлам
2 - 16.03.2004 - 09:23
не все так просто. Долго объяснять зачем все это, но если есть решение у данной проблемы - то это было бы просто архизамечательно. можно, конечно, попробовать с помощью js подключить файлик удаленный, с параметрами, но от композиции js-php, что-то меня блевать тянет
Terminator
3 - 16.03.2004 - 09:45
inсludе("http://localhost/temp/conf.php");
Думаю, что подключается не сам файл а результат его интерпретации
buster
4 - 16.03.2004 - 10:06
Terminator, хорошо объяснил.
Хлам
5 - 16.03.2004 - 10:09
хорошо-то может и хорошо, но насущность проблемы нисколько не уменьшилась. Вот и думайте, хорошо, все-таки, или так себе
Megas
6 - 16.03.2004 - 10:18
Но терминатор прав. А то что это получается я у себя в какомнибудь pass.php пропизываю пароли на доступ к чему угодно а тут взяли и так просто их сперли.
А вобще переименуй свой conf.php в чтонибудь типа conf.inc и юзай удаленно в таком случае он не будет выполнятся.
Terminator
7 - 16.03.2004 - 10:18
Дело в том, что файлы с расширением php интерпретируется удаленным сервером как html, вот он и интерпретируется (это прописывается в параметрах)
проще всего переименовать файл и вызывать
inсludе("http://localhost/temp/conf.txt");
cnyx
8 - 16.03.2004 - 10:22
В *.тхт нельзя, так как если хранить на серваке, то он содержимое этого *.тхт файла выдаст. Можно будет в браузере просмотреть. Надо *.inc расширение делать.
Хлам
9 - 16.03.2004 - 10:23
Знаете, не пробовал, но ощущение, что и в самом деле это и есть панацея. Посему, нижайший всем поклон, уважаемые, мы хорошо поработали :)
Terminator
10 - 16.03.2004 - 10:25
[8]
>>В *.тхт нельзя, так как если хранить на серваке, то он содержимое этого *.тхт файла выдаст.
А надо что?
Mips
11 - 16.03.2004 - 10:30
Знаем мы вас, начинающих хакеров :) Пароли вы и переменные разные таким образом посмотреть пытаетесь.
Есть конечно один способ... надо чтобы на том сервере не выполнялся код пхп, иначе ты будешь получать результат работы пхп-скрипта
cnyx
12 - 16.03.2004 - 10:33
Блин, Mips правильно говорит, если это файл удаленный и расширение php в mime-types привязано, то будут выдаваться результаты работы скрипта. А если, к примеру, там будут пароли и логины к базе данных, и чтобы хранить их в одном месте, а для скрипта на другом серваке их инклюдом включать, то надо чтобы было расширение .inc
Сиськин
13 - 16.03.2004 - 11:18
to >В *.тхт нельзя, так как если хранить на серваке, то он содержимое этого *.тхт файла выдаст.
############################################
А попробуй хранить данные в conf.php так---
<?php
Данные как в txt
?>
И никто ни посмотрит и...
###########################################
Вообще-то это фигня если ты можешь прочитать этот файл просто так и и другой может...так что то, что хочешь ты нелогично даже...
Забей на это... Подругому делай....
P.S А что в файле ? Пароли или общедоступные данные?
hotspa
14 - 21.03.2004 - 14:58
эх, программеры.......
когда подключаешь файл с помощью inсludе или require надо писать относительный путь к файлу, а не абсолютный, тогда все будет работать.
джан
15 - 22.03.2004 - 13:58
А я вот храню всё секретное на серваке у хостера на ступеньку ниже моего сайта(public_html), и никто кроме меня не достанет.
Mips
16 - 22.03.2004 - 17:17
hotspa, да куда уж нам... Прочитай сабж ещё раз. И, особенно, второе предложение, только очень внимательно. Джан, тоже самое ;)
DIVЕR
17 - 23.03.2004 - 13:48
НУ, тогда уж делать сокетами и с базовой аутентификацией =)
Это на случай, если надо выполнять код с другого сервера, а также исключить возможность просмотра этого кода другими личностями.
 
Либо, если обращение к другому серверу (где хранится исходник PHP) будет происходить всё время с одного и того же адреса, то можно по идее разрешать вывод PHP-исходника только клиенту с этим самым адресом (клиенту - тому, кто делает inсludе('http://.....smth.php') ).
 
Также хочу отметить для почти всех =) что inсludе и require - это НЕ функции! Это языковые конструкции! Т.е. они делают вот что: перед передачей исходника компилятору они заменяют свой вызов на результат того, что они подключают (это если в двух словах), т.е. работают на более низком уровне, чем, скажем, mysql_query(...).
DIVЕR
18 - 23.03.2004 - 13:50
> передачей исходника компилятору
 
Или всё же только интерпретатору?..
:)))

К списку вопросов на форуме Веб-дизайн

>>