Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Функция: передать аргумент внутрь включенного файла через require
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2014
Помог: 0 раз(а)
Есть сайт, с автоматизацией вывода некоторой информации из бд. Структура: несколько пхп файлов объединненых индексом, с пересылкой переменных внутри методом GET.
Делаю еще один index.php, старый индекс переименовываю в main.php.
$idc работает только в пределах данного файла index.php.
Как мне $idc передать внутрь не только main.php, но и других файлов (не всех, какие понадобятся в процессе).
Метод GET я не понимаю как тут использовать, да и POST - все примеры через формы.
Буду благодарен просто за ссылку на то куда копать. Функции в новинку еще.
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2014
Помог: 0 раз(а)
Tyoma5891
решил сделать session_start(), через куки нельзя эту инфу записывать.
IllusionMH
хотел ожидание сделать внутри подключаемого файла. то есть там сделал _REQUEST этого аргумента. Но то ли я что-то не так понимаю в работе функций. то ли просто так нельзя делать.
Делаю через session_start.
Сделал так:
Теперь переменную видно где угодно, через $_SESSION. Но еще взамен получил очередную ошибку новичков -
session_start(): Cannot send session cache limiter - headers already sent
Проверил файл, нет ли там доп. символов. Кодировку поменял еще раз. Все равно выскакивает. Делаю session_start сразу после <?php, без лишних пробелов.
Если в файле хтмл код, то делаю закрытие ?>, но ошибка есть.
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
code_maker пишет:
Tyoma5891
решил сделать session_start(), через куки нельзя эту инфу записывать.
это почему это? данные переменной сессий будут одинаково доступны, только во время ее работы, так само можно и настроить куки на определеное время жизни...
DelphinPRO
Отправлено: 17 Сентября, 2014 - 15:13:02
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
>> $_SESSION['idc'] = "somecompany";
В $GLOBALS['idc'] пишите. она тоже глобальная Разумеется, если переменная нужна в пределах одного запроса
----- Чем больше узнаю, тем больше я не знаю.
IllusionMH
Отправлено: 17 Сентября, 2014 - 17:59:20
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
code_maker, если вы передаете параметры в функцию, не пробовали их описывать в объявлении функции?
code_maker
Отправлено: 18 Сентября, 2014 - 08:58:49
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2014
Помог: 0 раз(а)
Tyoma5891
я к тому что куки же на стороне пользователя создаются? заказчик против такой реализации, плюс он легко читает код. С одной стороны задачи четкие и понятные, с другой полный контроль над выполнением.
DelphinPRO
ваш вариант не сработал. В main.php есть инклуды, плюс с нее идет переход на обработчик через аякс. много я там нагородил)) по идее в обработчике надо принять переменную и еще на одной странице. Ну и на Main.php. В итоге 3 страницы всего.
я постом хотел сначала. Но примеры нашел только через формы. а у меня нет форм, только индексы имеющие разные значения переменной.
пробовал, не сработало. А если неправильно понял, то буду благодарен за уточнение.
У меня по пути возникла еще такая глупая проблема.
Файл index.php может быть где угодно. Он ссылается на папку с сайтом-шаблоном.
Там есть файл main.php с относительными путями (хидер и футер подгружаю).
при переходе на сайт через индекс, хидер и футер не подгружаются.
Делаю костыль - еще один индекс внутри папки, ссылаюсь через основной индекс на него и внутри костыля делаю абсолютные пути.
Тогда все грузится нормально, а при переходе внутри сайта нас незаметно скидывает на main, который после первого щелчка по меню уже корректно отображается.
Сделать в main абсолютные пути пробовал - крашится.
p.s с ошибкой сессий разобрался - надо было ее открывать в файле к которому инклуды подкючаются.
этого достаточно чтобы параметр который передается в функцию был виден внутри файла как $idc
code_maker
Отправлено: 18 Сентября, 2014 - 12:59:53
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2014
Помог: 0 раз(а)
IllusionMH в пределах текущего файла да. а в main.php мне говорят Undefined variable.
Sail
Отправлено: 18 Сентября, 2014 - 13:05:57
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
code_maker пишет:
Как мне $idc передать внутрь не только main.php, но и других файлов (не всех, какие понадобятся в процессе).
Если переменная определяется/инициализируется в файле, то она без проблем доступна во всех подключаемых через include или require файлах, если подключение осуществляется после инициализации.
Если надо использовать эту переменную в теле функции, то эту переменную надо либо передавать в функцию как параметр, либо в теле функции объявлять эту переменную глобальной.
Применительно к участку кода из первого сообщения, примерно так:
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
[зануда ON]
Sail пишет:
И в теле функции, однако, лучше использовать не require_once, а include_once, особенно, если путь формируется "на лету"...
Дайте угадаю - потому что require подключаеться до испонения скрипта, а include во время?
должен вас огорчить. когда-то так и было, но сейчас они отличаються только уровнем ошибок, когда файл не найден
[зануда OFF]
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.