Forum Webscript.Ru

Программирование => PHP => Тема начата: Tepncuxopa от 19 Марта 2002, 17:37:35

Название: require
Отправлено: Tepncuxopa от 19 Марта 2002, 17:37:35
В шаблоне для статей пишу:

$mytitle=urlencode(\'Bla-bla-bla\');
require ("http://localhost/interest/head.php?title=$mytitle");

В результате получаю ошибку:

Failed opening required \'http://localhost/interest/head.php?title=Bla-bla-bla\' (include_path=\'\')
Название: 2Moderators
Отправлено: Tepncuxopa от 19 Марта 2002, 17:46:48
Ребята, сорри! Второй раз промахиваюсь :(
Перенесите тему в PHP, плиз.
Название: require
Отправлено: ThE0ReTiC от 19 Марта 2002, 18:02:59
Попробуй вместо localhost написать 127.0.0.1
Тебе нужно запустить файл, или вложить его?

The require() statement replaces itself with the specified file, much like the C preprocessor\'s #include works.
Название: require
Отправлено: Metaller от 19 Марта 2002, 18:13:31
А разве там не должен быть обязательно физический  путь прописан??
Название: require
Отправлено: ThE0ReTiC от 19 Марта 2002, 18:35:40
Цитировать
А разве там не должен быть обязательно физический путь прописан

Нет.
Название: require
Отправлено: Tepncuxopa от 19 Марта 2002, 18:36:31
Цитировать
Попробуй вместо localhost написать 127.0.0.1
Та же петрушка получается :(

Мне нужно вложить еще один php-шаблон, в котором вместо переменной $title нужно подставить название статьи (оно хранится в $mytitle). Т.е. получается, что этот шаблон еще и сервером отпарсится должен.

Цитировать
А разве там не должен быть обязательно физический путь прописан??
В мануале эта функция упоминается именно с виртуальным путем. И по-моему это логически правильно, т.к. шаблон парсится сервером при вставке.
Название: require
Отправлено: ThE0ReTiC от 19 Марта 2002, 18:37:34
А что, шаблон на удаленном сервере лежит?
Название: require
Отправлено: Dm от 19 Марта 2002, 19:23:40
удаленный require - это круто! =)

имхо, в таком случае лучше использовать fopen.
плюс, естественно, это более безопасное решение.
Название: require
Отправлено: Tepncuxopa от 19 Марта 2002, 19:29:03
Цитировать
А что, шаблон на удаленном сервере лежит?
Нет, в том же каталоге, что и index.php (файл, в который вставляется шапка head.php).
Название: require
Отправлено: AliMamed от 19 Марта 2002, 19:44:52
$title=$mytitle;
require("head.php");
Название: require
Отправлено: ThE0ReTiC от 19 Марта 2002, 23:15:11
Цитировать
удаленный require - это круто! =)

Не. Это мануал.
AliMamed Прав.
Это, кстати, есть там же :)
Название: require
Отправлено: Dm от 19 Марта 2002, 23:17:23
во-первых, зачем удаленно, если локально можно?

во-вторых, это не есть хороший стиль программирования.

(мое имхо)
Название: require
Отправлено: ThE0ReTiC от 19 Марта 2002, 23:19:13
Цитировать
во-первых, зачем удаленно, если локально можно?

А если нельзя? (fopen не предлагать, и так понятно, что это лучше)
Название: require
Отправлено: Dm от 19 Марта 2002, 23:24:48
Цитировать
А если нельзя? (fopen не предлагать, и так понятно, что это лучше)


какой еще fopen для подключения локальных скриптов? =)
Название: require
Отправлено: ThE0ReTiC от 20 Марта 2002, 01:25:50
Цитировать
какой еще fopen для подключения локальных скриптов? =)

Ты отвлекся. :)
Я имею ввиду удаленный скрипт.
Название: require
Отправлено: Dm от 20 Марта 2002, 01:34:03
ThE0ReTiC
тогда да.
только точнее, не скрипт, а его результат, т.е. код html.
Название: require
Отправлено: Tepncuxopa от 20 Марта 2002, 15:04:59
Цитировать
$title=$mytitle;
require("head.php");
Так не работает! Посуди сам: при такой записи переменная $title будет определена только в шаблоне index.php, а мне нужно, чтобы она была определена в шаблоне head.php и этот шаблон был отпарсен с ее учетом. Т.е. должна иметь место запись вида: head.php?title=\'чего-то там\'. Вопрос в том, как правильно это написать.
Цитировать
Это, кстати, есть там же
Ага, но это немного не для тех случаев, как я понимаю.
Название: require
Отправлено: KBA-KBA от 20 Марта 2002, 15:48:02
Цитировать

$title=$mytitle;
require("head.php");

А у меня работает...
Название: require
Отправлено: ThE0ReTiC от 20 Марта 2002, 16:03:32
Цитировать
Посуди сам: при такой записи переменная $title будет определена только в шаблоне index.php, а мне нужно, чтобы она была определена в шаблоне head.php и этот шаблон был отпарсен с ее учетом.

Извини, не права. Тебе никто не мешает сделать обработку $title в head.php.
Вынужден повториться:
The require() statement replaces itself with the specified file, much like the C preprocessor\'s #include works.
Вольный перевод:
Выражение require()  заменяется содержимым указанного файла, так же как и директива #include препроцессора С
Название: require
Отправлено: Tepncuxopa от 20 Марта 2002, 16:22:29
Цитировать
Вольный перевод:
Выражение require() заменяется содержимым указанного файла, так же как и директива #include препроцессора С
Тут проблема не в переводе :) проблема в том, что я понятия не имею, как работает директива #include препроцессора С.

Вообщем, буду я, наверное, переставлять Apache+Php+MySQL. А то и PhpMyAdmin глючит, и траблы всякие с php функциями случаются :(
Название: require
Отправлено: ThE0ReTiC от 20 Марта 2002, 16:31:11
Рабюотает она очень просто.
Немного оффтопик, но надеюсь меня простят.
 Предположим у нас есть несколько общих переменных, которые надо использовать в нескольких файлах:
[cpp]
char Buffer[255];
int MyConst = 10;
bool TrueFlag = false;
...
[/cpp]
Вместо того, чтобы прописывать эти переменные в жадом файле, выносив в отдельный, например vars.h
После чего в sample001.c Пишем
[cpp]
#include "vars.h"
...
int main(int argc, char * argv[])
{
.....
retrun 0;
}
[/cpp]
Препроцессор, обрабатывая sample001.c приводит его к такому виду:
[cpp]
char Buffer[255];
int MyConst = 10;
bool TrueFlag = false;
...
...
int main(int argc, char * argv[])
{
.....
retrun 0;
}
[/cpp]
То есть делает замену строки #include  "vars.h" на содержимое файла vars.h.
Вот собсно и все.
Название: require
Отправлено: Tepncuxopa от 20 Марта 2002, 16:44:59
Пасиба! Буду знать :)