Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2010, 17:48   #1
A_r_r_a_y
Форумчанин
 
Аватар для A_r_r_a_y
 
Регистрация: 01.03.2008
Сообщений: 165
По умолчанию аналог file_get_contents()

Здраствуйте, возникла потребность записывать содержимое файла в переменную, причем из локального файла, в файле может содержаться как обычный html, так и php-код. file_get_contents отлично с этим справляется, но нужно чтобы в считываемых файлах были доступны переменные сессий, что, естесственно, не позволяет file_get_contents.
Пробовал также использовать сокеты, результат тот же, отсюда вопрос: можно ли через сокеты использовать текущую сессию (может быть в заголовке нужно что-то передать) или есть какой-либо иной способ?
Заранее спасибо.
A_r_r_a_y вне форума Ответить с цитированием
Старый 07.07.2010, 00:49   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

О каких переменных сессий вы говорите? Код файла - он и есть код файла, какое отношение он имеет к сессиям?
motorway вне форума Ответить с цитированием
Старый 07.07.2010, 03:40   #3
A_r_r_a_y
Форумчанин
 
Аватар для A_r_r_a_y
 
Регистрация: 01.03.2008
Сообщений: 165
По умолчанию

нужно сделать примерно так:
файл 1.php:
PHP код:
<?
   session_start
();
   
$_SESSION['name_variable'] = 'value';
   
$str file_get_contents('http://127.0.0.1/2.php');
?>
файл 2.php:
PHP код:
<?
   session_start
();
   echo 
$_SESSION['name_variable'];
?>
При таком варианте использования file_get_contents в переменную $str ничего не записывается, что и неудивительно. Как можно получить код страницы с сохранением переменных сессии?
A_r_r_a_y вне форума Ответить с цитированием
Старый 07.07.2010, 07:45   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

а что, нельзя после сохранения файла дописывать че нада?
PHP код:
$str file_get_contents('http://127.0.0.1/2.php'); 
$str .= $_SESSION['name_variable']; 
а вообще не очень понятно для чего все это нужно...
ADSoft вне форума Ответить с цитированием
Старый 07.07.2010, 08:18   #5
A_r_r_a_y
Форумчанин
 
Аватар для A_r_r_a_y
 
Регистрация: 01.03.2008
Сообщений: 165
По умолчанию

Нет, нельзя, т.к. переменная может располагаться и в середине файла.
Я уже нашел решение - буферизация вывода.
Нужно мне это для реализации шаблонов. Шаблоны имеют различные параметры, которые в зависимости от ситуации заменяются на значения, один из видов параметров - подключаемый модуль.
A_r_r_a_y вне форума Ответить с цитированием
Старый 07.07.2010, 11:46   #6
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от A_r_r_a_y Посмотреть сообщение
Нет, нельзя, т.к. переменная может располагаться и в середине файла.
Я уже нашел решение - буферизация вывода.
Нужно мне это для реализации шаблонов. Шаблоны имеют различные параметры, которые в зависимости от ситуации заменяются на значения, один из видов параметров - подключаемый модуль.
Ахинея какая-то. Как простой буферизацией вывода вы справились с заменой переменной в файле шаблона? О_о
Дайте угадаю, вам нужен был include(), а не file_get_contents()? А может просто str_replace()?
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 07.07.2010, 16:11   #7
JanGuus
Новичок
Джуниор
 
Регистрация: 05.07.2010
Сообщений: 1
По умолчанию

Цитата:
Я уже нашел решение - буферизация вывода.
Поясните, причем здесь буферизация? Вам нужен элементарный парсинг для шаблонизатора, как я понял.
JanGuus вне форума Ответить с цитированием
Старый 07.07.2010, 17:26   #8
A_r_r_a_y
Форумчанин
 
Аватар для A_r_r_a_y
 
Регистрация: 01.03.2008
Сообщений: 165
По умолчанию

предположим в бд хранится такой шаблон:
PHP код:
%head%
%
content%
%
footer
все параметры описаны в другой таблице, к примеру:
%head% - text
%content% - module
%footer% - text
в еще одной таблице хранятся их значения для конкретного раздела:
%head% - шапка
%content% - modules/content1.php
%footer% - подвал
затем эти параметры заменяются на значения и должно получиться
Код HTML:
шапка
{содержимое modules/content1.php}
подвал
обычный include не подходил, т.к. его нельзя записать в переменную, поэтому использовал буферизацию:
PHP код:
$html=...;//получаем шаблон
ob_start();
include(
modules/content1.php);
$module_html ob_get_contents();
ob_clean();
ob_end_flush();
$html str_replace('%content%',$module_html,$html);//шаблон с замененным кодом модуля 
A_r_r_a_y вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог getch(); в C# Spice Общие вопросы .NET 5 17.05.2015 17:17
Аналог try. beemoto Общие вопросы Delphi 16 16.12.2009 18:33
Работа со страницами - curl + file_get_contents + cookie domovoi PHP 6 01.03.2009 00:53
Аналог GetDC() Василий Win Api 3 14.01.2009 09:32
Аналог with на С++. Иллидан Общие вопросы C/C++ 1 16.05.2008 21:41